Taller de Robtica - PowerPoint PPT Presentation

1 / 125
About This Presentation
Title:

Taller de Robtica

Description:

Proyecto: Programaci n mediante simuladores de una operaci n de tomar y ... 1, Set up: Part2, Set up Options, Training Center Introduction and Missions 1-6 ... – PowerPoint PPT presentation

Number of Views:34
Avg rating:3.0/5.0
Slides: 126
Provided by: canuckG
Category:

less

Transcript and Presenter's Notes

Title: Taller de Robtica


1
Taller de Robótica
  • Dr. Gildardo Sánchez Ante
  • Departamento de Cs. Computacionales
  • ITESM-Campus Guadalajara

2
Contenido
  • 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.

3
Contenido
  • 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.

4
Instructor
  • 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

5
Qué 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

6
Robots
Exploración
Investigación
Juguete?
Industrial (Soldadura)
Industrial (Desplazamiento)
7
Contenido
  • 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.

8
Enfoques 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.

9
Enfoques 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.

10
Enfoques 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.

11
Contenido
  • 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.

12
Algunos 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.

13
Caso 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.

14
El robot
15
El 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).

16
Resultado de un barrido con el Sick Laser
17
(No Transcript)
18
Estrategia de Next-best view
19
Un ejemplo
2
1
6
4
20
Caso 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)
22
Target
Campo visual del observador
Observador
23
Una mejor estrategia
Target
Observador
24
Cuál es la mejor posición?
Target
Observador
25
Menor tiempo de escape
Target
Observador
26
Un ejemplo
27
En un entorno complejo
28
Videos
29
Empleo 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.

30
Kephera
Mobs
31
Caso 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!

34
Contenido
  • 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.

35
Introducción
El RCX es el cerebro del sistema ROBOTICS
INVENTION, el RCX se programa mediante una PC,
además tiene pre-cargados algunos programas.
36
Introducció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.
37
Introducción
Para construir un robot se utilizan el RCX y las
piezas LEGO.
38
Introducció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.
39
Hardware
  • 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

40
Hardware
  • 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

41
El cerebro del Lego (RCX)
Imágenes de http//graphics.stanford.edu/kekoa/rc
x/
42
Circuit Board
VISTA POSTERIOR
VISTA FRONTAL
43
Hardware
  • 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

44
Hardware
  • 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

45
Hardware
  • 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

46
Hardware
  • 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

47
Contenido
  • 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.

48
Software
  • 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

49
Software
  • 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

50
Software
  • 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

51
Software
  • Program RCX
  • Incluye los submenús Training Center programming
    instructions y RCX Code programming environment

52
Software
  • 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

53
Software
  • 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

54
Software
  • 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

55
I/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)

56
Introducción a Not Quite C (NQC)
57
Introducció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.

58
Reglas léxicas de NQC
  • Comentarios
  • / Esto es un comentario/
  • // Esto también lo es
  • Constantes Numéricas
  • X 10

59
Estructura 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).

60
Tasks
  • 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.

61
Tasks
  • Los tasks pueden activarse o detenerse mediante
    las sentencias start y stop.
  • Start task_name
  • Stop task_name

62
Funciones
  • 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

63
Funciones
  • 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.

64
Argumentos para las funciones
65
Paso 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!

66
Paso 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.

67
Paso 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

68
Funciones
  • 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.

69
Subrutinas
  • 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.

70
Subrutinas
  • La sintaxis para una subrutina es la siguiente
  • sub name()
  • // body of subroutine

71
Variables
  • 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

72
Variables
  • Globales
  • Se les declara fuera del alcance de cualquiera de
    las funciones.
  • Locales
  • Se les declara dentro de las tareas, funciones o
    subrutinas.

73
Ejemplos 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

74
Estructuras de Control
  • Como cualquier lenguaje estructurado, NQC posee
    las siguientes estructuras de control
  • Secuencia
  • Tomas de decisión
  • Repetición

75
Secuencia
  • x 1
  • y 2
  • Simplemente, una sentencia se ejecuta después de
    la otra.
  • Se pueden agrupar mediante llaves.

76
Tomas 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

77
Tomas 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

78
Expresiones
79
Condiciones
80
Ciclos
  • while (condition) body
  • while(x lt 10)
  • x x1
  • y y2

81
Ciclos
  • do body while (condition)
  • for(stmt1 condition stmt2) body
  • repeat (expression) body

82
until()
  • 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().

83
While
  • 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

84
Until
  • 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

85
Programando para el robot
  • Hemos hablado ya de algunos de los elementos
    fundamentales del lenguaje.
  • Ahora veamos cómo emplearlos en problemas con el
    robot.

86
Ejemplo
task main() OnFwd(OUT_A) OnFwd(OUT_C)
Wait(400) OnRev(OUT_AOUT_C) Wait(400)
Off(OUT_AOUT_C)
87
Task 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.

88
Wait
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.

89
Reverse 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.

90
Sensores
  • 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)

91
Sensores

92
Sensores
93
Sensores
94
Salidas
  • 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

95
Salidas
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).
96
Salidas

97
Salidas
  • 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

98
Motores
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

99
Instalando 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

100
El RCX cc
101
RcxCC
  • Integrated Development Environment

102
Diagnóstico
103
Controlador
104
El Joystick
105
Un piano
106
Un 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.

107
Sintaxis
  • 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

108
Salidas
  • Tres salidas OUT_A, OUT_B, OUT_C
  • Atributos
  • Modo (off, on, float)
  • Dirección (fwd, rev)
  • Nivel de potencia

109
Modo
  • Float significa que un motor puede moverse
  • No lo detiene
  • Ejemplo (Corra 8_float.nqc)
  • task main()
  • SetOutput(OUT_A, OUT_FLOAT)

110
Direcció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)

111
Potencia
  • 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.

112
Programa 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

113
define
  • 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!

114
Regresando 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?

115
Tankbot 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

116
Wait
  • 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?

117
Tankbot 2
  • Veamos qué ocurre cuando cambiamos algunos
    valores.

118
Bumpbot
  • Iniciemos con el uso de sensores.
  • Configurar los sensores
  • Muestrear los sensores

119
Sensores
  • 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.

120
Sensor
  • 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)

121
Contenido
  • 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.

122
Proyecto 1Sigue la luz
  • Diseñar un robot que sea capaz de detectar una
    fuente de luz y dirigirse a ella.

123
Contenido
  • 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.

124
Proyecto 2Seguimiento de líneas
  • Diseñar un robot que sea capaz de identificar una
    línea de color negro en el piso y seguirla.

125
Contenido
  • 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.

126
Proyecto 3Robot merodeador
  • Diseñar un robot que sea capaz de moverse
    aleatoriamente en el entorno sin colisionar con
    obstáculos.
Write a Comment
User Comments (0)
About PowerShow.com