Evitar obstaculos

De Proyecto Butiá
Saltar a: navegación, buscar

Este programa intenta evitar obstaculos disminuyendo la velocidad al aproximarse a un obstaculo como medida de seguridad. En este ejemplo se utiliza solamente un sensor de distancia.
Lo principal es descomponer el problema en subproblemas más sencillos. De ésta manera podemos identificar dos subproblemas:
- disminuir la velocidad al aproximarse al obstaculo
- eludir al obstaculo

El robot va a estar todo el tiempo haciendo estas subtareas, por lo tanto nuestro programa va a necesitar un bloque por-siempre.

Para hacer que el robot vaya disminuyendo su velocidad a medida que se acerca a un objeto utilizamos un enfoque llamado reactivo, donde se mapea directamente lo sensado a los actuadores. En este caso vamos a cambiar la velocidad de los motores de manera proporcional con la distancia al objeto.

AcercarReactivo.png
Notar que restamos 150 al valor sensado de distancia, debido a que los sensores de distancia no miden a menos de XXX cms, por lo tanto nunca va a llegar a cero su resultado. Al restar 150 logramos que el robot pueda setear velocidades cercanas al 0.

Otro aspecto importante es que podemos imprimir valores en pantalla utilizando el bloque imprimir, en este caso se puede utilizar el bloque de suma como una forma de concatenar o "unir" textos.

Depurando.png

Podemos ver el programa completo en la siguiente imagen, en ella puede apreciarse que el robot avanza regulando su velocidad según la distancia a los obstáculos y cuando el objeto está muy cerca (distancia 400) ejecuta la rutina de evadir obstáculos.

Principal.png

La rutina de evadir obstaculos simplemente retrocede el robot una distancia aleatoria entre 0 y 40 cms y luego de setear nuevamente las velocidades dependiento de lo que este cerca, gira de forma aleatoria entre 0 y 100 grados.

Esquivar.png


Descargar este ejemplo para TortugarteButiá

El comportamiento en acción: