PDF de programación - 5 - Percibiendo el Mundo

Imágen de pdf 5 - Percibiendo el Mundo

5 - Percibiendo el Mundográfica de visualizaciones

Publicado el 29 de Octubre del 2019
482 visualizaciones desde el 29 de Octubre del 2019
569,0 KB
22 paginas
Creado hace 14a (04/02/2010)
Capítulo 5

5

Percibiendo el
Mundo

Veo todos los obstáculos en mi camino.
De la canción Puedo ver claramente ahora,
Johnny Nash, 1972.

67

Capítulo 5

Página opuesta: Los Sentidos
La foto es cortesía de Blogosphere (cultura.blogosfere.it)

68

Percibiendo el Mundo

En el capítulo anterior, aprendieron cómo la percepción del tiempo, el atascamiento y el nivel de
batería, pueden ser usados para escribir comportamientos de robot simples pero interesantes.
Todos los robots, además, vienen equipados con un conjunto de sensores externos (o
extroperceptores) que pueden percibir varias cosas en el ambiente. La percepción hace que el
robot sea consciente de su entorno y puede ser usada para definir más comportamientos
inteligentes. La percepción también está relacionada con otro concepto importante en
computación: la entrada o input. Las computadoras actúan a partir de diferente tipo de
información: números, textos, sonidos, imágenes, etc. para producir aplicaciones útiles.
Generalmente se hace referencia a la adquisición de información para ser procesada como
entrada o input. En este capítulo también veremos cómo otras formas de entradas pueden ser
adquiridas para ser procesadas por un programa. Primero, focalicemos en los sensores del
Scribbler.
Los sensores del Scribbler

El robot Scribbler puede percibir la cantidad de luz en el ambiente, la
presencia (o ausencia) de obstáculos a su alrededor, y también toma
fotos con su cámara. En el Scribbler hay localizados varios dispositivos (o sensores). A
continuación, se presenta una breve descripción de los mismos:
Cámara: La cámara puede tomar una imagen fija de cualquier cosa que el robot esté
“visualizando” en ese momento.
Luz: Hay tres sensores de luz en el robot. Están localizados en los tres agujeros de la parte
frontal del robot. Estos sensores pueden detectar los niveles de brillo (u oscuridad). Estos pueden
ser usados para detectar variaciones en la luz ambiente en una habitación. Además, al usar la
información proveniente de la cámara, el Scribbler tiene a disposición un conjunto de sensores de
brillo alternativo (izquierda, centro y derecha).
Proximidad: Hay dos juegos de estos sensores en el Scribbler: Sensores IR (izquierda y derecha)
en el frente; y Sensores de Obstáculos (izquierda, centro y derecha) en el Fluke. Pueden ser
usados para detectar objetos en el frente y a los costados.
Familiarizándose con los sensores
Percibir a través de los sensores provistos por el Scribbler es sencillo. Una vez que estén
familiarizados con los detalles de comportamiento de los sensores, podrán usarlos en sus
programas para diseñar comportamientos interesantes con su Scribbler. Pero primero, debemos
ocupar un poco de tiempo conociendo estos sensores; cómo acceder a la información que
reportan; y cómo se ve esta información. Con respecto a los sensores internos, Myro provee
varias funciones que pueden ser usadas para adquirir datos de cada dispositivo de sensor. Allí
donde haya disponibles múltiples sensores, tienen la opción de obtener datos de todos los
sensores, o selectivamente de un sensor individual.

Realizar la siguiente actividad: quizás la mejor forma de tener una mirada rápida sobre el
comportamiento global de los sensores es usando la función Myro senses:

69

Capítulo 5

>>> senses()

Scribbler Sensors

Esto da como resultado una ventana (ver la imagen adjunta)
que muestra todos los valores de los sensores (exceptuando la
cámara) en tiempo real. Se actualizan a cada segundo.
Deberían mover el robot por el entorno par ver cómo cambian
los valores de los sensores. La ventana también mostrará los
valores del sensor de atascamiento y de nivel de batería. El
valor que está en el extremo izquierdo en cada conjunto de sensor (luz, IR, obstáculo y brillo) es
el valor del sensor de la izquierda, seguido por el del centro (si existe), y luego el de la derecha.
La Cámara

La cámara puede ser usada para tomar fotos de la vista actual del robot. Como pueden ver, la
cámara está localizada en el Fluke. La vista de la imagen tomada por la cámara dependerá de la
orientación del robot (y del Fluke). Para tomar fotos con la cámara deberán usar el comando
takePicture:

takePicture()
takePicture("color")
takePicture("gray")

Este comando toma una foto y devuelve una imagen. De
manera predeterminada, cuando no se especifican
parámetros, la foto es en color. Si se usa la opción "gray",
pueden obtener una foto en escala de grises.
Por ejemplo:

>>> p = takePicture()
>>> show(p)

De manera alternativa, también pueden hacer lo siguiente:

>>> show(takePicture())

Una vez que han tomado una foto con la cámara, pueden hacer muchas cosas con ella. Por
ejemplo, pueden querer ver si hay una computadora portable presente en la imagen. El
procesamiento de información es un vasto sub-campo de las ciencias de la computación y tiene

70

Percibiendo el Mundo

aplicaciones en muchas áreas. Comprender una imagen es bastante complejo, pero es algo que
hacemos con naturalidad. Por ejemplo, en la imagen de arriba, no tenemos problemas para
localizar la portable la estantería de libros de fondo, e incluso un estuche de una raqueta. La
cámara del Scribbler es su dispositivo más complejo y requerirá mucho esfuerzo computacional
y energía para ser usado en el diseño de comportamientos. En el caso más simple, la cámara les
puede servir como sus “ojos” remotos en el robot. Quizás no lo mencionamos antes, pero el
rango del Bluetooth inalámbrico en el robot es de 100 metros. En el capítulo 9 aprenderemos
acerca de varias maneras de usar las fotos. Por ahora, si toman una foto con la cámara y desean
guardarla para un futuro uso, utilicen el comando Myro, savePicture, como en el siguiente
ejemplo:

>>> savePicture(p, “office-scene.jpg”)

Píxeles

El archivo office-scene.jpg será guardado en la misma carpeta que su carpeta Start Python.
También pueden usar savePicture para guardar una
serie de imágenes de la cámara y convertirla en una
“película” animada (como una imagen gif animada).
Esto se ilustra con el ejemplo de abajo.
Realizar la siguiente actividad: En primer lugar,
prueben todos los comandos para sacar y guardar fotos.
Asegúrense de sentirse cómodos usándolos. Prueben
sacar fotos en escala de grises también. Supongan que
el robot se ha internado en un lugar donde no pueden
verlo pero está aún en un rango de comunicación con
la computadora. Ustedes desearían mirar alrededor
para ver dónde está. Quizás está en un cuarto nuevo.
Pueden pedirle al robot que se dé vuelta y tomar varias
fotos que les muestren el entorno. Pueden hacerlo
usando una combinación de los comandos rotate y
takePicture, como se muestra abajo:

Cada imagen está hecha de
pequeños elementos de
imagen o píxeles. En una
imagen color, cada píxel
contiene información sobre el
color que está compuesta por
la cantidad de rojo, verde y
azul (RGB). Cada uno de estos
valores está en el rango de
0..255 y por lo tanto toma 3
bytes o 24 bits para guardarlo
en la información contenida en
un solo píxel. Un píxel de color
rojo puro tendrá los valores
RGB (255, 0, 0). Una imagen en
escala de grises, por otro lado,
sólo contiene el nivel de gris en
un píxel, que puede ser
representado por un solo byte
(u 8 bits) como un número
dentro del rango de 0..255
(donde 0 es negro y 255 es
blanco).

while timeRemaining(30):
show(takePicture())
turnLeft(0.5, 0.2)
Esto significa tomar una foto y luego girar durante 0.2
segundos, repitiendo los dos pasos durante 30
segundos. Si observan la ventana de imagen que
aparece, verán las sucesivas vistas del robot. Prueben
esto varias veces y observen si pueden contar cuántas
imágenes diferentes aparecen. Seguidamente, cambien el comando takePicture para obtener fotos
en escala de grises. ¿Pueden contar la cantidad de fotos que ha tomado esta vez? Hay, por
supuesto, una manera más sencilla de hacerlo:

71

Capítulo 5

N = 0
while timeRemaining(30):
show(takePicture())
turnLeft(0.5, 0.2)
N = N + 1
print N
Ahora mostrará la cantidad de imágenes que toma. Notarán que es capaz de tomar muchas más
imágenes en escala de grises que en color. Esto se debe a que las imágenes en color tienen mucha
más información que las grises (ver el texto arriba). Una imagen color de 256x192 requiere
256x192x3 (= 147,456) bytes de datos, mientras que una imagen en escala de grises requiere
solamente 256x192 (= 49, 152) bytes. Cuantos más datos se deban transferir del robot a la
computadora, más tiempo tardará.
También pueden guardar un GIF animado de las imágenes generadas por el robot usando el
comando savePicture, a través de la acumulación de una serie de imágenes en una lista. Esto se
muestra abajo:

Pics = []
while timeRemaining(30):
pic = takePicture()
show(pic)
Pics.append(pic)
turnLeft(0.5, 0.2)
savePicture(Pics, “office-movie.gif”)
Primero creamos una lista vacía llamada Pics. Luego le anexamos las sucesivas imágenes
tomadas por la cámara a la lista. Una vez que se han reunido todas las imágenes, usamos
savePicture para guardar el conjunto completo como un GIF animado. Simplemente carguen el
archivo en un navegador Web y mostrará las imágenes como en una película.
Hay muchas otras formas interesantes de usar las imágenes de la cámara. En el capítulo 9
exploraremos las imágenes con mayor detalle. Por ahora, veamos los otros sensores del
Scribbler.

La percepción de la luz

Las siguientes funciones están disponibles para obtener valores de sensores de luz:
getLight(): Devuelve una lista que contiene los tres valores de todos los sensores de luz.
getLight(<POSITION>) Devuelve el valor actual en el sensor de luz <POSITION>.
<POSITION> puede ser uno de 'left' , 'center' , 'right' (izquierda, centro y derecha), o uno de los
números 0, 1, 2. Las posiciones 0, 1 y 2 corresponden a los sensores de la izquierda, el centro y
la derecha. Por ejemplo:

72

Percibiendo el Mundo

>>> getLigh
  • Links de descarga
http://lwp-l.com/pdf16797

Comentarios de: 5 - Percibiendo el Mundo (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad