Title: Taller de Robtica
1Taller de Robótica
- Dr. Gildardo Sánchez Ante
- Departamento de Cs. Computacionales
- ITESM-Campus Guadalajara
2Contenido
- SESION I
- Introducción.
- Enfoques para programación en robótica móvil.
- Robótica móvil en la práctica Ejemplos.
- Lego Mindstorms Hardware.
- Lego Mindstorms Software.
- Proyecto 1 Detección y seguimiento de una fuente
luminosa - Proyecto 2 Seguimiento de líneas.
- Proyecto 3 Robot Merodeador.
3Contenido
- SESION II
- Handy Board Hardware.
- Handy Board Software.
- Proyecto Clasificando piezas.
- Proyecto Recolector de basura.
- Robótica de Manipuladores.
- Programación de robots manipuladores.
- Proyecto Programación mediante simuladores de
una operación de tomar y transferir piezas. - Conclusiones.
4Instructor
- Gildardo Sánchez AnteDoctorado en Cs.
ComputacionalesITESM-Cuernavaca/Stanford Univ. - Área de especialidad
- Planeación de movimientos en robótica.
- Oficina
- DIA-3,
- 3er Piso, Edificio Administrativo
- Tel. (33) 3669-3000 x 3130
- gildardo_at_itesm.mx
- http//academia.gda.itesm.mx/gsanchez
5Qué es un robot?
- Máquina reprogramable, multifuncional diseñada
para manipular materiales, partes, herramientas o
dispositivos especializados a través de
movimientos programables para el desarrollo de
una variedad de tareas Robotics Industries
Association
6Robots
Exploración
Investigación
Juguete?
Industrial (Soldadura)
Industrial (Desplazamiento)
7Contenido
- SESION I
- Introducción.
- Enfoques para programación en robótica móvil.
- Robótica móvil en la práctica Ejemplos.
- Lego Mindstorms Hardware.
- Lego Mindstorms Software.
- Proyecto 1 Detección y seguimiento de una fuente
luminosa - Proyecto 2 Seguimiento de líneas.
- Proyecto 3 Robot Merodeador.
8Enfoques para robótica móvil
- Enfoque Deliberativo o de Planificación.
- Suponiendo que el robot conoce su entorno
perfectamente y que éste cambia solamente por la
acción del mismo robot o que en su defecto el
robot puede predecir esos cambios. - Entonces es posible que el robot genere un plan
de movimientos en un proceso fuera de línea y que
una vez obtenido éste, lo ejecute.
9Enfoques para robótica móvil
- Enfoque Reactivo
- Para casos en que el robot no conoce la dinámica
del entorno, es posible inducir en él una serie
de comportamientos simples cuya combinación crea
en un momento determinado la posibilidad de
lidiar con ciertos problemas. - En este caso el robot no planifica de antemano
sus movimientos, los va decidiendo de acuerdo con
la información que los sensores le proporcionan y
las reglas que le han sido programadas.
10Enfoques para robótica móvil
- Ambas propuestas son interesantes y pueden ser
complementarias. Mientras que en el enfoque
deliberativo puro el lazo de control no se
cierra, evitando la posibilidad de manejar
errores, en el caso de la robótica reactiva, es
muy difícil reproducir acciones complejas en el
robot. Casi siempre se limita a imitar en un
cierto grado acciones simples de insectos.
11Contenido
- SESION I
- Introducción.
- Enfoques para programación en robótica móvil.
- Robótica móvil en la práctica Ejemplos.
- Lego Mindstorms Hardware.
- Lego Mindstorms Software.
- Proyecto 1 Detección y seguimiento de una fuente
luminosa - Proyecto 2 Seguimiento de líneas.
- Proyecto 3 Robot Merodeador.
12Algunos ejemplos prácticos
- La intención de presentar estos casos es dar
ideas de cómo se han abordado algunos de los
problemas clásicos en planeación de movimientos
de robots móviles.
13Caso 1
- Misión Construir un mapa de un entorno
inicialmente desconocido. - Equipo
- Robot Super Scout equipado con un Sick Laser, y
acceso inalámbrico a una computadora.
14El robot
15El proceso
- Hacer un barrido del entorno con el láser.
- Generar polilíneas.
- Alinear el mapa actual con la versión anterior de
éste. - Marcar free-edges.
- Determinar siguiente posición de barrido
(next-best view algorithm).
16Resultado de un barrido con el Sick Laser
17(No Transcript)
18Estrategia de Next-best view
19Un ejemplo
2
1
6
4
20Caso 2 Target Tracking
- Misión Identificar un objetivo (target) y
mantenerlo siempre dentro del campo de visión del
robot (autonomous observer). - Equipo
- Robot SuperScout con dos cámaras de video, frame
grabber y acceso inalámbrico a otra computadora. - Robot Nomad 200 guiado mediante un humano.
21(No Transcript)
22Target
Campo visual del observador
Observador
23Una mejor estrategia
Target
Observador
24Cuál es la mejor posición?
Target
Observador
25Menor tiempo de escape
Target
Observador
26Un ejemplo
27En un entorno complejo
28Videos
29Empleo de Simuladores
- Los simuladores son herramientas sumamente
poderosas que aunque no suplen la utilización de
un robot real, sí ayudan a optimizar su uso,
especialmente en las etapas de depuración.
30Kephera
Mobs
31Caso Navegación simple
- Misión Moverse por ahí tratando de evitar
colisiones. - Equipo Plataforma de Lego con dos sensores de
contacto y uno de luz infrarroja.
32(No Transcript)
33- Pero mejor....
- Pongamos manos a la obra!
34Contenido
- SESION I
- Introducción.
- Enfoques para programación en robótica móvil.
- Robótica móvil en la práctica Ejemplos.
- Lego Mindstorms Hardware.
- Lego Mindstorms Software.
- Proyecto 1 Detección y seguimiento de una fuente
luminosa - Proyecto 2 Seguimiento de líneas.
- Proyecto 3 Robot Merodeador.
35Introducción
El RCX es el cerebro del sistema ROBOTICS
INVENTION, el RCX se programa mediante una PC,
además tiene pre-cargados algunos programas.
36Introducción
El RCX tiene puertos para tomar lecturas de los
sensores, un procesador para realizar cálculos y
salidas con las cuales controla los motores.
37Introducción
Para construir un robot se utilizan el RCX y las
piezas LEGO.
38Introducción
Mediante un lenguaje de programación visual para
PC y el puerto serial, es posible programar y
posteriormente descargar el código que ejecutará
el RCX.
39Hardware
- El RXC
- 5 programas precargados, que se ejecutan mediante
los botones Prgm y Run. Es posible borrarlos para
introducir programas propios. - Opera con 6 baterías AA ó con eliminador de
baterías - Si el RCX no está ejecutando ningún programa, el
sistema se apagará después de 15 minutos, este
valor se puede modificar utilizando el software
de programación incluido con el sistema
40Hardware
- Características del RXC
- 3 puertos de entrada
- 3 puertos de salida
- 4 botones de control
- 1 display LCD
- 1 conector para eliminador de baterías
- 1 emisor/receptor infrarrojo
41El cerebro del Lego (RCX)
Imágenes de http//graphics.stanford.edu/kekoa/rc
x/
42Circuit Board
VISTA POSTERIOR
VISTA FRONTAL
43Hardware
- Puertos entrada salida
- Los puertos de entrada son puntos de conexión
para sensores (luz, contacto, temperatura y
rotación) - Los puertos de salida son puntos de conexión para
motores y otro tipo de dispositivos como lámparas
44Hardware
- Botones de control
- Rojo (ON-OFF) encendido y apagado del sistema
RCX - Negro (View), permite seleccionar la función que
se desea monitorear para mostrarla en pantalla.
Ejem visualizar la lectura de un sensor en los
puertos de entrada 1,2 o 3 o la velocidad de un
motor en los puertos A, B o C - Gris(Prgm o program) permite seleccionar alguno
de los programas precargados en el PCX - Verde (Run) ejecuta y detiene el programa
seleccionado con el boton Prgm
45Hardware
- Display del RCX
- Indicador de batería baja
- Indicador de puerto infrarrojo, se enciende
cuando se está programando el dispositivo - Barra Indicadora de descarga de programas, se
enciende cuando se está bajando un programa de
una PC al RCX - Flechas indicadoras para puertos de salida, se
activan para indicar actividad en un puerto de
salida - Flecha indicadora de puerto de entrada, indican
actividad en un puerto de entrada - Icono de persona, cuando está corriendo indica
que el RCX está ejecutando un programa
46Hardware
- Transmisor IR
- Establece enlace inalámbrico entre una PC y el
RCX mediante el puerto serial de la computadora
para bajar programas a la unidad RCX - Es necesario tener un campo de visión abierto
para establecer comunicación. Se tienen dos
rangos de comunicación seleccionables corto/largo
mediante un interruptor - Típicamente la distancia para bajar un programa
al RCX varía de 4-6 pulgadas, aunque bajo
condiciones adecuadas puede establecer
comunicación hasta unos 90 pies - El transmisor utiliza una batería de 9 volts
47Contenido
- SESION I
- Introducción.
- Enfoques para programación en robótica móvil.
- Robótica móvil en la práctica Ejemplos.
- Lego Mindstorms Hardware.
- Lego Mindstorms Software.
- Proyecto 1 Detección y seguimiento de una fuente
luminosa - Proyecto 2 Seguimiento de líneas.
- Proyecto 3 Robot Merodeador.
48Software
- Menú Principal
- Cuando se ejecuta por primera vez, el software se
activa en modo guiado. Este modo consta de las
siguientes etapas Login, Main Menu, Getting
Started, Tour, Set up Part 1, Set up Part2, Set
up Options, Training Center Introduction and
Missions 1-6 - El Menú Principal permite accesar a cualquiera de
los siguientes submenús Getting Started, Program
RCX, Help y WWW
49Software
- Getting Started
- Contiene los submenus Tour, Set Up Part 1 y Set
Up Part 2 - Tour
- Introducción al producto MINDSTORMS y sus
conceptos - Set Up Part 1
- Instrucciones paso a paso que explican cómo
cambiar baterías, cómo usar los botones, cómo
girar los motores y leer los sensores y cómo
utilizar los programas precargados
50Software
- Set Up Part 2
- Instrucciones paso a paso que explican cómo
preparar el transmisor infrarrojo IR para usarlo
y conectarlo a la computadora. Además, tiene
instrucciones para bajar el software al sistema
RCX - Set Up Options
- Esta pantalla permite verificar o cambiar los
valores del sistema RCX y del transmisor IR sin
necesidad de pasar por los submenus Set Up Part
1 y Set Up Part 2
51Software
- Program RCX
- Incluye los submenús Training Center programming
instructions y RCX Code programming environment
52Software
- TRAINING CENTER
- Guía a los siguientes submenús
- explicación de RCX Code
- creación de programas en RCX Code
- cargando un programa al RCX
- guardando un programa en el Program Vault y
- Otras funciones
53Software
- RCX CODE
- Es un ambiente de programación gráfico para
construir programas. Cada bloque en la pantalla
es una instrucción - Permite generar programas que serán descargados
en el RCX con acciones o comportamientos - La programación se realiza en el área de trabajo
del RCX Code. El espacio de trabajo variará
dependiendo del programa
54Software
- PROGRAM VAULT
- Permite almancenar los programas generados con el
RCX Code en el disco duro o en unidades de
diskette. Existen opciones como New, Import,
Export o Delete. En el centro existen
contenedores que indican los programas
almacenados y se opera con las flechas arriba y
abajo
55I/O
- Tres salidas A, B y C
- Para manejar motores
- Tres entradas 1, 2 y 3
- Interruptores
- Sensor de luz
- Contador de revoluciones
- Otros (temperatura, etc)
56Introducción a Not Quite C (NQC)
57Introducción
- NQC quiere decir Not Quite C, que es el nombre de
un lenguaje de programación desarrollado por Dave
Baum y otras personas. - NQC tiene una sintaxis similar a la que posee el
lenguaje C. - Sin embargo, NQC es un lenguaje de propósito
específico para programar varios de los productos
de Lego Mindstorms. - Existen otras alternativas, como es el caso de
legOS y pbFORTH.
58Reglas léxicas de NQC
- Comentarios
- / Esto es un comentario/
- // Esto también lo es
- Constantes Numéricas
- X 10
59Estructura de un programa en NQC
- Un programa en NQC se compone por bloques de
código y variables globales. - Existen tres tipos diferentes de bloques de
código - Tareas (tasks),
- Funciones en línea (inline) y
- Subrutinas (subroutine).
60Tasks
- El RCX soporta implícitamente el multi-tasking
(cuando se comparte un procesador en múltiples
procesos). - Los tasks se definen mediante
- task nombre()
-
- // codigo de la tarea
-
- Un programa debe tener siempre al menos un task,
llamado main. El número máximo de tasks depende
del hardware en que se correrá. Para el caso del
RCX se trata de 10.
61Tasks
- Los tasks pueden activarse o detenerse mediante
las sentencias start y stop. - Start task_name
- Stop task_name
62Funciones
- A veces es conveniente agrupar conjuntos de
sentencias en una función, la cual puede ser
llamada después cuando sea necesario. - Las funciones en NQC se definen
- void name(argument_list)
-
- // body of the function
-
63Funciones
- void proviene de C. En el caso de las funciones
de NQC, no es posible regresar valores, de ahí
que se les defina con void. - La lista de argumentos puede ser vacía o puede
contener variables, separadas por comas e
indicando su tipo. NQC soporta cuatro tipos para
los argumentos.
64Argumentos para las funciones
65Paso de parámetros por valor
- void foo(int x)
- x 2
-
- task main()
- int y 1 // y is now equal to 1
- foo(y) // y is still equal to 1!
-
66Paso de parámetros const int
- void foo(const int x)
-
- PlaySound(x) // ok
- x 1 // error - cannot modify argument
-
- task main()
-
- foo(2) // ok
- foo(45) // ok - expression is still constant
- foo(x) // error - x is not a constant
-
- Esto es particularmente útil ya que hay algunas
funciones del RCX que solamente aceptan
argumentos constantes.
67Paso de parámetros por referencia
- void foo(int x)
-
- x 2
-
- task main()
-
- int y 1 // y is equal to 1
- foo(y) // y is now equal to 2
- foo(2) // error - only variables allowed
-
- En este caso es posible que la función modifique
los valores de los argumentos que se le pasan
68Funciones
- Las funciones en NQC siempre son expandidas como
inline. - Esto significa que cada llamada a la función
resulta en una copia del código de la función que
se incluye en el programa. Si no se les usa de
manera cuidadosa, pueden producir códigos de
tamaño excesivo.
69Subrutinas
- A diferencia de las funciones, las subrutinas
permiten que una sola copia del mismo código sea
compartida por diferentes usuarios. - Esto las hace ser más eficientes en cuanto al uso
de espacio, sin embargo, por limitaciones en el
RCX, existen algunas restricciones en su uso - No pueden usar argumentos.
- Una subrutina no puede llamar a otra.
- El número máximo de ellas está limitado a 8 en el
caso del RCX. - Estas restricciones las hacen menos deseables que
las funciones.
70Subrutinas
- La sintaxis para una subrutina es la siguiente
- sub name()
- // body of subroutine
71Variables
- Todas las variables en NQC son del mismo tipo
(enteros con signo de 16 bits). - Se les declara empleando
- int x // declare x
- int y,z // declare y and z
- int a1,b // declare a and b, initialize a
to 1
72Variables
- Globales
- Se les declara fuera del alcance de cualquiera de
las funciones. - Locales
- Se les declara dentro de las tareas, funciones o
subrutinas.
73Ejemplos de variables
- int x // x is global
- task main()
-
- int y // y is local to task main
- x y // ok
- // begin compound statement
- int z // local z declared
- y z // ok
-
- y z // error - z no longer in scope
-
- task foo()
- x 1 // ok
- y 2 // error - y is not global
-
74Estructuras de Control
- Como cualquier lenguaje estructurado, NQC posee
las siguientes estructuras de control - Secuencia
- Tomas de decisión
- Repetición
75Secuencia
-
- x 1
- y 2
-
- Simplemente, una sentencia se ejecuta después de
la otra. - Se pueden agrupar mediante llaves.
76Tomas de decisión
- if (condition) consequence
- if (condition) consequence else alternative
- if (x1) y 2
- if (x1) y 3 else y 4
- if (x1) y 1 z 2
77Tomas de decisión
- Ejemplo
- switch(x)
-
- case 1
- // do something when X is 1
- break
- case 2
- case 3
- // do something else when x is 2 or 3
- break
- default
- // do this when x is not 1, 2, or 3
- break
-
- switch (expression) body
- case constant_expression
- default
78Expresiones
79Condiciones
80Ciclos
- while (condition) body
- while(x lt 10)
-
- x x1
- y y2
81Ciclos
- do body while (condition)
- for(stmt1 condition stmt2) body
- repeat (expression) body
82until()
- Esta es nuestra primera construcción de control.
- Hasta ahora nuestros códigos habían sido lineales
o secuenciales. - Algunas sentencias de NQC permiten controlar el
flujo del programa. - Observe while().
83While
- Sintaxis
- while( condicion )
- cuerpo
- La condición es una expresión que evalúa a falso
o verdadero - Pueden ser también condiciones simples, tales
como true, false - Algunas más complejas empleando sensores un poco
más adelante
84Until
- El opuesto del while
- El ciclo se ejecuta hasta que la condición sea
verdadera. - Mientras sea falsa
- Es común usarla sin un cuerpo
- until(false)
- Y su uso completo es
- until( condicion )
- sentencias
-
85Programando para el robot
- Hemos hablado ya de algunos de los elementos
fundamentales del lenguaje. - Ahora veamos cómo emplearlos en problemas con el
robot.
86Ejemplo
task main() OnFwd(OUT_A) OnFwd(OUT_C)
Wait(400) OnRev(OUT_AOUT_C) Wait(400)
Off(OUT_AOUT_C)
87Task y main
task main() OnFwd(OUT_A) OnFwd(OUT_C)
Wait(400) OnRev(OUT_AOUT_C) Wait(400)
Off(OUT_AOUT_C)
- Por ahora, solamente lo usaremos, más adelante
explicaremos con más detalle. - main indica dónde es que inicia el programa
- Las llaves delimitan bloques, en este caso al
programa mismo.
88Wait
task main() OnFwd(OUT_A) OnFwd(OUT_C)
Wait(400) OnRev(OUT_AOUT_C) Wait(400)
Off(OUT_AOUT_C)
- Detiene la ejecución del programa durante un
cierto tiempo. - El tiempo está dado como centésimas de segundo.
- Ejemplo cuatro segundos.
89Reverse y Off
task main() OnFwd(OUT_A) OnFwd(OUT_C)
Wait(400) OnRev(OUT_AOUT_C) Wait(400)
Off(OUT_AOUT_C)
- Similar a Fwd()
- Note que se controlan dos salidas.
90Sensores
- Se usan los nombre SENSOR_1, SENSOR_2, y SENSOR_3
para identificar los puertos de sensores del RCX.
Un sensor tiene dos componentes su tipo y modo.
El tipo determina cómo se lee el sensor, y el
modo determina cómo se interpreta el valor. Estos
se fijan empleando - SetSensorType(sensor, tipo) y SetSensorMode(sensor
, modo). - SetSensorType(SENSOR_1,SENSOR_TYPE_LIGHT)
- SetSensorMode(SENSOR_1, SENSOR_MODE_PERCENT)
- Por conveniencia también puede usarse
- SetSensor(sensor, configuracion)
- SetSensor(SENSOR_1, SENSOR_LIGHT)
- SetSensor(SENSOR_2, SENSOR_TOUCH)
91Sensores
92Sensores
93Sensores
94Salidas
- Los nombres OUT_A, OUT_B, y OUT_C se emplean para
identificar las salidas del RCX. Todos los
comandos para controlar salidas pueden trabajar
con varias salidas a la vez. Pro ejemplo "OUT_A
OUT_B". - Cada salida tiene tres atributos distintos modo,
dirección, y nivel de potencia. El modo se
especifica de acuerdo con
95Salidas
La dirección se fija mediante SetDirection(salidas
, direccion). La dirección puede
ser La potencia va de 0 (menor) a 7
(mayor). Se fijan mediante SetPower(salidas,
potencia).
96Salidas
97Salidas
- Algunos ejemplos son
- OnFwd(OUT_A) // turn on A in the forward
direction - OnRev(OUT_B) // turn on B in the reverse
direction - Toggle(OUT_A OUT_B) // flip directions of A
and B - Off(OUT_A OUT_B) // turn off A and B
- OnFor(OUT_C, 100) // turn on C for 1 second
98Motores
task main() OnFwd(OUT_A) OnFwd(OUT_C)
Wait(400) OnRev(OUT_AOUT_C) Wait(400)
Off(OUT_AOUT_C)
- OUT_A es el dispositivo (motor) en la salida A
- OnFwd( ) enciende el motor hacia adelante
- Más adelante POWER
99Instalando RxcCC
- Las instrucciones dicen que se instale primero el
sofware de LEGO. - RcxCC necesita que se instale Acrobat 4
- Finalmente, corra el ejecutable para hacer la
instalación. - Vea la página de web
- http//www.cs.unc.edu/lastra/comp006/Notes/notes
_8_28_01.html
100El RCX cc
101RcxCC
- Integrated Development Environment
102Diagnóstico
103Controlador
104El Joystick
105Un piano
106Un programa simple
- Corra 1_simple.nqc
- Mostrar cómo compilar y bajar el programa
- Pruebe en diferentes slots de programa
- Uso de Start y Stop
- Herramientas
- Firmware, Direct Control, Joysticks, etc.
107Sintaxis
- Los comandos terminan con punto y coma( )
- Las llaves encierran bloques de código.
- La sintaxis es importante!
- Mostrar un ejemplo de error de sintaxis
- Es diferente de un error lógico
108Salidas
- Tres salidas OUT_A, OUT_B, OUT_C
- Atributos
- Modo (off, on, float)
- Dirección (fwd, rev)
- Nivel de potencia
109Modo
- Float significa que un motor puede moverse
- No lo detiene
- Ejemplo (Corra 8_float.nqc)
- task main()
-
- SetOutput(OUT_A, OUT_FLOAT)
-
110Dirección
- Veamos esto
- Main llama
- SetDirection(OUT_B, OUT_FWD)
- o OUT_REV o OUT_TOGGLE
- También Fwd(), Rev(), Toggle(), OnFwd(), OnRev(),
etc. - También OnFor(salidas, tiempo)
111Potencia
- SetPower(OUT_C, x)
- Donde x va de 0 a 7.
- 0 es la mínima potencia.
- 7 es el máximo.
- Util para movernos despacio mientras depuramos el
código. - Inicialmente la potencia se fija en 7.
112Programa Tankbot 1
// tankbot1.nqc - define LEFT OUT_A define
RIGHT OUT_C task main() On(LEFTRIGHT)
until(false)
- Dos cosas nuevas
- define
- until()
- Y los comentarios
113define
- Es sólo una sustitución directa
- Ejemplo
- define LEFT OUT_A
- Simplemente reemplaza LEFT con OUT_A
- OnFwd(LEFT) ? OnFwd(OUT_A)
- Note que define no termina con punto y coma!
114Regresando a Tankbot 1
- Note que dado que false nunca puede ser true
- El programa estará en until(false) por siempre!
- Qué ciclo while() podríamos haber usado en lugar
de éste?
115Tankbot 2
- Abra el programa Tankbot2
- Observe el define
- Es más fácil leer y modificar el programa.
- On ( )
- Por omisión potencia máxima, hacia adelante
- Wait lo veremos en la siguiente lámina
116Wait
- Muy simple
- Simplemente haz nada hasta que el tiempo haya
transcurrido. - Wait(x)
- Donde x es el tiempo en centésimas de segundo
- define TURN_TIME 200
- Wait(TURN_TIME)
- Cuánto es eso?
117Tankbot 2
- Veamos qué ocurre cuando cambiamos algunos
valores.
118Bumpbot
- Iniciemos con el uso de sensores.
- Configurar los sensores
- Muestrear los sensores
119Sensores
- Los sensores son llamados
- SENSOR_1, SENSOR_2, SENSOR_3
- Configurándolos
- NQC nos permite definir el tipo y modo de los
sensores - El modo permite hacer diversas interpretaciones
del valor de un sensor. - Por ahora, ignoraremos eso.
120Sensor
- Simplemente usaremos la subrutina
- SetSensor(SENSOR_1, SENSOR_TOUCH)
- Con ello, podemos reer valores tanto procesados
como sin procesar. - Por ahora, le usaremos como en este caso
- while(SENSOR_1 0)
- o
- while(SENSOR_1 1)
121Contenido
- SESION I
- Introducción.
- Enfoques para programación en robótica móvil.
- Robótica móvil en la práctica Ejemplos.
- Lego Mindstorms Hardware.
- Lego Mindstorms Software.
- Proyecto 1 Detección y seguimiento de una fuente
luminosa - Proyecto 2 Seguimiento de líneas.
- Proyecto 3 Robot Merodeador.
122Proyecto 1Sigue la luz
- Diseñar un robot que sea capaz de detectar una
fuente de luz y dirigirse a ella.
123Contenido
- SESION I
- Introducción.
- Enfoques para programación en robótica móvil.
- Robótica móvil en la práctica Ejemplos.
- Lego Mindstorms Hardware.
- Lego Mindstorms Software.
- Proyecto 1 Detección y seguimiento de una fuente
luminosa - Proyecto 2 Seguimiento de líneas.
- Proyecto 3 Robot Merodeador.
124Proyecto 2Seguimiento de líneas
- Diseñar un robot que sea capaz de identificar una
línea de color negro en el piso y seguirla.
125Contenido
- SESION I
- Introducción.
- Enfoques para programación en robótica móvil.
- Robótica móvil en la práctica Ejemplos.
- Lego Mindstorms Hardware.
- Lego Mindstorms Software.
- Proyecto 1 Detección y seguimiento de una fuente
luminosa - Proyecto 2 Seguimiento de líneas.
- Proyecto 3 Robot Merodeador.
126Proyecto 3Robot merodeador
- Diseñar un robot que sea capaz de moverse
aleatoriamente en el entorno sin colisionar con
obstáculos.