E
La diversidad de normas reduce el riesgo de quedarse atascado en
una esquina.
Solución:
La tarea nos revela que deberemos controlar el robot en dependencia
de los detectores de bordes. Por esta razón, fraccionamos la tarea en
partes pequeñas. Primeramente consultaremos los sensores
detectar un trayecto definido. La longitud de trayecto se determina
con una variable VAR10. El bloque de asignación Z2 = 0 es nuevo.
Luego de reflexionar un tanto, nos damos cuenta del sentido que
tiene. Si no ponemos la variable en cero, el mecanismo funcionará
solamente una vez, ya que cuando Z2 haya alcanzado el valor de la
variable VAR10, el contador de trayecto fallaría en cada uno de los
pasos siguientes. Desde la perspectiva del programador profesional,
nos encontramos ahora con variables locales y globales. La variable
local Z2 se inicia en el subprograma antes de cada uso.
50
(detectores de bordes). Si ningún sensor
estuviese activo, el robot se desplaza hacia
adelante. En la ilustración esto se muestra como
bloque "Adelante". Detrás de cada nuevo
componente se esconde un subprograma.
Los subprogramas mejoran la claridad de
sistemas complejos y su uso repetido mejora el
aprovechamiento de la capacidad de los sistemas
computarizados. Nuestro primer subprograma es
muy sencillo, pues pone únicamente en
movimiento los motores M1 y M2. Sin embargo,
necesitaremos más subprogramas. Según la
situación, el robot deberá desviarse hacia la
izquierda, hacia la derecha o hacia atrás. En
este caso no bastará con detener los motores.
Se deberá programar una secuencia determinada
de movimientos. Echemos un vistazo a otro
subprograma. Con éste subprograma, el robot
retrocederá al detectar un borde.
Para ello pondremos los motores en marcha
atrás. Nuestra rueda de impulso deberá entonces
Resultado:
La llamada de subprogramas incrementan la claridad de los programas. Uti-
lizaremos las variables para medir diferentes valores, en este caso la longi-
tud de trayectos. Necesitaremos diferentes longitudes de trayecto para que
el robot se pueda "liberar" de rincones. Si los trayectos fuesen absoluta-
mente idénticos, podría ocurrir que el robot se mueva de un lado a otro en
un rincón. Al utilizar las variables observaremos sui ámbito de validez. Ini-
ciaremos las variables locales, es decir las variables que se usan dentro de
un subprograma, antes de su primera aplicación.
No damos también cuenta que nuestro robot precisa de libertad de
movimientos para que funcione correctamente. Si durante su movimiento de
desvío el robot encontrase nuevamente un borde, no podría reaccionar ante
él. Quienes aceptar grandes retos pueden intentar dar solución a este
problema.
4.3 Robot con detección de obstáculos
Hasta ahora hemos podido detectar bordes con éxito. Los obstáculos
normales representan un problema. Tendremos que modificar el principio de
detección de bordes. Un contacto de choque adecuado reemplazará a las
ruedas auxiliares. Es ocasión de reflexionar sobre la imperfección del
detector de bordes. Existen situaciones peligrosas, durante las cuales el
robot puede caer al abismo durante su retroceso por estar "ciego" atrás.
Un tercer sensor resuelve tal imperfección. Entretanto, nos hemos convertido
en astutos programadores. Esto nos ayudará puesto que la tarea se hace
más compleja como se puede observar si echamos un vistazo al programa.
El programa contiene nuevos bloques funcionales. Insertaremos el
componente ESPERA en determinadas posiciones del programa. Esto es
fácil de entender, aquí se esperará el tiempo ingresado, antes de que se
lleve a cabo la siguiente función del programa.
Lo verdaderamente nuevo aquí son las ecuaciones lógicas. Hasta ahora
habíamos llevado a cabo de inmediato una ecuación al consultar el sensor y
dividido correspondientemente nuestro programa. Una ecuación similar existe
también en el recuento de impulsos, la ecuación con un número determinado
de impulsos. También es nueva la ecuación lógica con varias expresiones en
un componente ECUACION.
Tarea 4:
Construye el robot según las instrucciones de ensamblaje con el en-
granaje de reducción rápido 50:1. El modelo deberá desplazarse hacia
adelante. Cuando se detecte un obstáculo en uno de los sensores de-
lanteros (E3 ó E4), el robot se detendrá. Si se detecta un obstáculo a
la derecha, el robot retrocede y se desvía hacia la izquierda (aproxi-
madamente 30°). Si se detecta un obstáculo a la izquierda, el robot
se desvía hacia la derecha (aproximadamente 45°) después de retro-
ceder. Los diferentes valores de ángulos son necesarios para que el
robot salga de un rincón. Si se detecta un obstáculo directamente en-
frente, el robot deberá retroceder y desviarse aproximadamente 90°.
Si se detecta un obstáculo al retroceder, el robot deberá avanzar un
poco y desviarse según lo planeado.