Evitar obstaculos

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

Este programa intenta evitar obstáculos disminuyendo la velocidad al aproximarse a un obstáculo 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 obstáculo
  • Eludir al obstáculo

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 10 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.
Notar que estos cálculos son para un sensor de distancia Sharp 2Y0A21 F09, puede ser necesario ajustar estas constantes en otro módelo de Sharp.

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. Esta es una buena herramienta para depurar los programas.

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: