Robótica en el Aula Manejo de Sensores Gabriel Ocaña Rebollo Ingeniero Superior de Telecomunicaciones Profesor E.S. de Tecnología CEP El Ejido, Noviembre 2009 Manejo de Sensores Sensores de LEGO Mindstorms NXT El robot LEGO Mindstorms NXT incluye 4 tipos de sensores: Sonido. Distancia por Ultrasonidos. Luminosidad. Contacto. Además, existen sensores de terceras partes que pueden utilizarse con los robots LEGO y ser programados con LEJOS. Color. Temperatura. Buscador de Infrarrojos. Sensor de Enlace IR. Brújula. Giroscopio. Aceleración-inclinación. Adaptador sensores Vernier Página 2 Etc. Sensor de Sonido Para utilizar el sensor de sonido, LEJOS incluye la clase SoundSensor. Para crear una instancia del sensor de sonido hay que informar del puerto en el que está conectado. Además, se pueden usar dB o dBA: SoundSensor sonido = new SoundSensor (SensorPort.S2); SoundSensor sondBA = new SoundSensor (SensorPort.S2, true); Los métodos que tiene la clase SoundSensor son: setDBA(boolean dba): fija el modo de funcionamiento del sensor, true para modo dBA y false para modo dB. int readValue():devuelve el valor del sonido captado en porcentaje. Página 3 Sensor de Ultrasónico de Distancia Para medir distancias se utiliza el sensor ultrasónico. LEJOS permite manejarlo con la clase UltrasonicSensor. Para crear una instancia del sensor de ultrasonidos hay que informar del puerto en el que está conectado: UltrasonicSensor sonar = new UltrasonicSensor(SensorPort.S4); El método más utilizado de la clase UltrasonicSensor es: int getDistance(): devuelve la distancia en cm. 255 significa fuera de rango. Página 4 Sensor de Luz Para medir intensidad luminosa se utiliza el sensor de luz. LEJOS permite manejarlo con la clase LightSensor. Al ser un sensor de luminosidad y no de color, lo que es detecta nivel de brillo. Trabaja por lo tanto en “blanco y negro” Tiene dos modos de operación: luz ambiente o luz reflejada usando su propio foco. Para crear una instancia del sensor de luz hay que informar del puerto en el que está conectado, y opcionalmente del modo de funcionamiento: LightSensor luzAmbiente = new LightSensor(SensorPort.S3); LightSensor luzReflejada = new LightSensor(SensorPort.S3, true); Los métodos más utilizados de la clase LightSensor son: setFloodlight(boolean floodlight): true para encender el foco, false para apagarlo. int readValue(): valor de 0 a 100 del nivel de intensidad de luz. Página 5 Sensor de Contacto Para detectar un toque o contacto se utiliza el sensor de contacto. LEJOS permite manejarlo con la clase TouchSensor. Para crear una instancia del sensor de contacto hay que informar del puerto en el que está conectado: TouchSensor contacto= new TouchSensor(SensorPort.S1); El único método de la clase TouchSensor es: boolean isPressed(): indica si el sensor está pulsado o no. Página 6 Montaje de Sensores Ampliar el módulo básico de locomoción con los cuatro tipos de sensores: Sonido Ultrasónico Luz Contacto Página 7 Montaje de Brazo Ampliar el módulo básico de locomoción con: Brazo para golpear una bola Soportes base: permiten realizar prácticas de detección de distancias y son a su vez el soporte de las bolas para el robot Jugador de Golf. Página 8 Manejo de Sensores Prácticas Básicas Programar un robot para que avance hasta que capte un sonido fuerte. Robot que va marchando hacia atrás, y cuando choca con un objeto se para y emite algún sonido. Robot que avanza hasta acercarse a 30 cm de un objeto. Robot que da una vuelta completa sobre sí mismo y avanza 20 cm en la dirección que más luz a detectado. Muestra por pantalla la dirección de avance y la máxima intensidad de luz detectada. Emite un sonido antes de orientarse en la dirección elegida y otro al parar. Robot que avanza hasta que encuentra un suelo negro. Nota: En Java, se pueden programar bucles que se repiten indefinidamente mientras se cumpla una condición dada. Son los bucles while y do-while. while (boolean condición){ ”Código que se ejecuta indefinidamente mientras se cumpla la condición” } Página 9 do{ ”Código que se ejecuta al menos una vez e indefinidamente mientras se cumpla la condición” } while (boolean condición) Manejo de Sensores Prácticas Avanzadas Robot seguidor de línea. Avanza siguiendo una línea negra dibujada en el suelo. Jugador de Golf: el robot se acerca a un soporte y se para a la distancia adecuada. Detecta el “color” de la bola según su luminosidad de modo que: Si la bola es roja la golpea. Si es la bola azul, emite algún sonido y da marcha atrás. Jugador de Golf Avanzado: se colocan los dos soportes en lugares cuyas coordenadas y orientación conoce el robot. El robot se acerca a las dos sucesivamente y las golpea o no según su color. Ampliación del Robot que avanza hasta acercarse a 30 cm de un objeto. Robot curioso: si el objeto se aleja, lo sigue en línea recta hasta volver a estar a 30 cm. Robot precavido: si el objeto se acerca hasta 25 cm, se aleja hasta volver a estar a 30 cm. Control remoto acústico: Con un sonido fuerte avanza, con dos gira a la derecha y con tres gira a la izquierda. Dibujo en pantalla de un gráfico con el volumen sonoro detectado durante 5 seg. Robot Radar: gira sobre sí mismo una vuelta completa y muestra por pantalla un gráfico tipo radar con todas las distancias detectadas. Página 10