MANUAL DE PROGRAMACIÓN CON ROBOTS PARA LA ESCUELA









MANUAL DE PROGRAMACIÓN CON ROBOTS PARA LA ESCUELA

CONTENIDO 

1. Trabajar con Software Libre 1
1.1. Software libre en la escuela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. ¿Por qué programar? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3. Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5. Actividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Introducción 5
2.1. El robot Multiplo N6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2. Introducción al entorno de Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2.1. Usando el intérprete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.2. PyShell (del proyecto wxPython) . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3. El ejemplo más sencillo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4. ¿Qué necesitamos para empezar? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.5. Conectando el robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.6. La primera actividad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.7. Cambiando el número de identificación del robot . . . . . . . . . . . . . . . . . . . . . 14
2.8. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.9. Actividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3. En movimiento 17
3.1. ¿Movemos al robot? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.1.1. Hacia adelante y hacia atrás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.1.2. ¿Giramos? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2. Dibujando figuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2.1. Mi primer programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2.2. Guardando mis programas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3. Agrupando instrucciones en funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.3.1. Nombres de función válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.3.2. Funciones con argumento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4. Agrupar funciones en módulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.1. Mi primer módulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4.2. Uso de import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.5. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.6. Actividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4. Los valores y sus tipos 31
4.1. Utilizando variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.1. Variables en funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.2. Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2.1. Tipos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2.2. Conversión de tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.2.3. Las Listas: las colecciones más simples . . . . . . . . . . . . . . . . . . . . . . . 39
4.2.4. Trabajando con listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.3. Ingreso datos desde el teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.4. Imprimiendo por pantalla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.5. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.6. Actividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5. Robots que deciden 45
5.1. Los valores de verdad en Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.1.1. Expresiones simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.1.2. Operadores lógicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.2. Condicionando nuestros movimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.3. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.4. Actividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6. Simplificando pasos 55
6.1. Sentencia de iteración for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.2. Sentencia de iteración while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.3. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.4. Actividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
7. ¿Hacemos una pausa? 63
7.1. Estructura de un programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
7.2. Algo más sobre funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
7.2.1. Definición de una función y argumentos . . . . . . . . . . . . . . . . . . . . . . 64
7.2.2. Retornando valores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
7.3. Importando módulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.4. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
7.5. Actividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
8. Utilizando los sensores 71
8.1. Conociendo los sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
8.2. Evitando choques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
8.2.1. Midiendo distancias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
8.2.2. Detectando obstáculos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
8.3. Sensores de línea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
8.4. Normalizando valores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
8.5. Velocidad proporcional a la distancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
8.6. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
8.7. Actividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
A. Instalación de paquetes 79
A.1. Instalador de Paquetes Synaptic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
A.2. Instalación de la API del Robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
A.2.1. En distribuciones basadas en Debian con Python 2.5 . . . . . . . . . . . . . . . 81
A.2.2. En distribuciones basadas en Debian con Python 2.6 o superior . . . . . . . . . 81
A.2.3. En Lihuen 4.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
B. Especificaciones de los robots 83
B.1. Multiplo N6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
B.1.1. Otras formas de programarlo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
B.2. Otros robots similares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
B.2.1. Robots artesanales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
B.2.2. Icaro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
B.2.3. Myro Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86



Comentarios