Grupo 1 – Robot Rastreador de Líneas con Evasión de Obstáculos

1. Introducción

1.1. Contexto y Motivación

En la última década, la robótica móvil y los sistemas autónomos han comenzado a  integrarse en la industria y los servicios. El desarrollo de vehículos capaces de navegar sin intervención humana directa es uno de los pilares de la Industria 4.0, facilitando tareas de logística, monitorización y transporte seguro. La motivación de este proyecto radica en la exploración de está nueva etapa buscando una idea que se aproxime a una solución real, pero dentro de nuestras limitaciones de conocimientos.

1.2. Definición del Problema

La navegación autónoma eficaz requiere que una máquina sea capaz de percibir su entorno de manera dual: reconociendo una ruta predeterminada (seguimiento de trayectoria) y reaccionando ante imprevistos (evitando de colisiones). El desafío técnico está en la gestión de estas dos tareas, donde el sistema debe decidir instantáneamente qué prioridad atender para garantizar tanto el cumplimiento de la misión como la integridad física del equipo.

1.3. Objetivo del Proyecto

Diseñar y construir un prototipo de vehículo autónomo capaz de realizar un seguimiento de línea continua y evadir obstáculos de forma independiente.

2.Trabajos Previos

La robótica móvil ha evolucionado desde sistemas rígidos hacia soluciones autónomas. Ha habido una evolución del guiado donde los primeros vehículos autónomos dependían de cables enterrados o imanes costosos. Actualmente, se prefiere el seguimiento de líneas mediante sensores ópticos infrarrojos por ser una solución económica, eficiente y fácil de implementar. Además también, se ha pasado de usar parachoques físicos (que requerían chocar para detectar) a sensores de ultrasonido. En este proyecto, el sensor ultrasónico se combina con un servomotor para realizar un escaneo, permitiendo evaluar diferentes rutas de escape antes de reanudar la marcha. Anteriormente, para saber qué pensaba el robot, era necesario conectarlo a un ordenador. Hoy, incluyendo sistemas como pantallas OLed o Zumbadores podemos informarnos de qué está haciendo el robot

3. Diseño y Arquitectura de Hardware

Unidad de Control (Arduino UNO R3): Actúa como el cerebro del proyecto. Esta placa procesa las señales de los sensores periféricos y ejecuta los algoritmos de control necesarios para la navegación del vehículo.

Sistema de Propulsión (Motores DC y Neumáticos): El movimiento mecánico es generado por motores de corriente continua (DC), los cuales proporcionan el par motor suficiente para el desplazamiento. Estos están acoplados a neumáticos.

Controlador de Potencia (Puente H L293D): Este controlador de motores permite gestionar el sentido de giro y la velocidad de los motores DC.

Subsistema de Sensores Infrarrojos (IR): Configurados para la detección de contraste en el suelo, estos sensores permiten al robot identificar y seguir una trayectoria predefinida (línea), enviando señales digitales al controlador al detectar cambios.

Sensor Ultrasónico: Mide la distancia hacia objetos frontales mediante la emisión y recepción de ondas sonoras.

Micro Servo SG90: Proporciona un mecanismo de rotación al sensor ultrasónico, permitiendo un escaneo multidireccional (barrido) para identificar la ruta de escape más óptima ante un bloqueo.

Sistema de Alimentación: La autonomía energética está garantizada por pilas de Litio tipo 18650 (2 pilas de 3.7V cada una). Estas alojadas en su correspondiente portapilas.

Pantalla OLED: Integrada por un módulo de visualización OLED SSD1306 de 128×64 píxeles. Su función principal es proporcionar retroalimentación visual en tiempo real sobre el estado del sistema, mostrando al usuario mensajes sobre el modo de operación y alertas ante la detección de obstáculos o ejecución de maniobras.

Zumbador: Se encarga de emitir señales sonoras para alertar sobre eventos críticos del entorno o confirmar estados del robot. Entre sus funciones se incluye la confirmación de inicialización, la advertencia sonora ante bloqueos en la ruta y tonos de éxito al finalizar la evasión

4. Desarrollo y Lógica de Software

El código completo puede verse aquí. La arquitectura del sistema se divide en cuatro módulos:

4.1. Subsistema de Supervisión y Bucle Principal

El programa implementa una máquina de estados con prioridades. La prioridad máxima está asignada al sistema de seguridad y evasión de colisiones. En cada iteración del ciclo principal, el microcontrolador evalúa en primer lugar los valores proporcionados por el sensor ultrasónico. Solo si el camino por el que circula está libre de obstáculos a una distancia de seguridad predefinida (15 cm), se cede el control al algoritmo de seguimiento de línea.

4.2. Subsistema de Detección y Evasión de Obstáculos

  • Filtro Anti-Ruido: Al detectar un obstáculo, el sistema realiza tres mediciones rápidas consecutivas. Solo si al menos dos de estas lecturas confirman la presencia del objeto, se valida la alerta y se desencadena la maniobra de evasión.
  • Escaneo: Una vez detenido el vehículo, se activa el servo que posiciona el sensor ultrasónico en ángulos de 155° (flanco izquierdo) y 35° (flanco derecho). Esto permite al robot mapear su entorno inmediato.
  • Decisión y Reincorporación: El microcontrolador compara las distancias libres en ambos flancos y selecciona aquel con mayor distancia libre. Posteriormente, ejecuta una secuencia pre-programada (giro, avance paralelo, giro de reincorporación) seguida de una búsqueda hasta que los sensores infrarrojos vuelven a detectar la línea.

4.3. Algoritmo de Navegación y Seguimiento de Trayectoria

El rastreo de la línea se fundamenta en un control lógico interpretando las señales digitales (0 y 1) de los dos sensores infrarrojos frontales. Si un sensor abandona la línea negra, el sistema compensa el error reduciendo o invirtiendo la velocidad del lado opuesto, consiguiendo así la corrección que devuelve el coche al centro de la trayectoria. Para la gestión del estado 0-0 (ambos sensores fuera de la línea), típico al salir de una curva de 90 grados o en un resbalón. El programa almacena constantemente en una variable (ultimaDireccion) la última corrección realizada (izquierda o derecha). Si el robot pierde la línea completamente, consulta esta variable para deducir la dirección previa, forzando un giro sobre su propio eje en el sentido correcto hasta recuperar la lectura del trazado.

4.4. Interfaz con el usuario

  • Gestión de Pantalla Inteligente (OLED): Para evitar consumo de ciclos de reloj innecesarios, hemos implementado la variable mostrandoRastreo que asegura que la pantalla solo se redibuje y consuma recursos cuando ocurre un cambio real en el estado de la máquina (por ejemplo, pasar del modo «RASTREANDO» al modo «ALERTA» o «ESCANEO»).

  • Zumbador: El cual nos proporciona tonos de inicio, por pérdida de línea, sirenas de alerta ante colisiones inminentes y tonos de éxito tras una maniobra de evasión.

5. Casos de Uso y Escenarios de Prueba

Hemos definido una serie de Casos de Uso para validar que el robot actúa de la manera deseada. Estos escenarios permiten evaluar el comportamiento del sistema de forma aislada.

Caso de Uso 1: Navegación en curvas de radio suave y constante

  • Descripción: La trayectoria presenta curvas con un radio superior a la longitud del chasis del robot.
  • Condición Inicial: El vehículo avanza y uno de los sensores IR abandona la línea (Estado 0-1 o 1-0).
  • Comportamiento Esperado: El sistema identifica el error direccional y aplica un cambio (frenando o invirtiendo las ruedas interiores a la curva) para obligar al coche a rotar hasta que ambos sensores recuperen el estado nominal.
  • Resultado de Prueba: Éxito. La respuesta es suficientemente rápida para no perder la traza.

Caso de Uso 2: Evasión de obstáculo estático en tramo recto

  • Descripción: Se coloca un obstáculo bloqueando completamente la línea recta.
  • Condición Inicial: El sensor ultrasónico detecta un eco a 15 cm.
  • Comportamiento Esperado: Se interrumpe el seguimiento (prioridad de seguridad). El robot se detiene, emite alerta acústica y visual (OLED), y el servomotor escanea los flancos. El sistema comprueba si hay algún lado ocupado, ejecuta una trayectoria trapezoidal de evasión (mediante temporizadores delay) y realiza una búsqueda avanzando en línea recta hasta volver a interceptar la línea negra de la que partió.
  • Resultado de Prueba: Éxito. El robot sortea el objeto y recupera la ruta, confirmando la maniobra con el tono de éxito.

Caso de Uso 3: Evasión de obstáculo estático con comprobación de alrededores

  • Descripción: Se coloca un obstáculo bloqueando completamente la línea recta y otro objeto en uno de sus lados.
  • Condición Inicial: El sensor ultrasónico detecta un eco a 15 cm.
  • Comportamiento Esperado: . El robot se detiene, emite alerta acústica y visual (OLED), y el servomotor escanea los flancos. El sistema elige el lado más despejado, ejecuta una trayectoria de evasión y realiza una búsqueda avanzando en línea recta hasta volver a interceptar la línea negra de la que partió.
  • Resultado de Prueba: Éxito. El robot sortea el objeto por el lado despejado, detecta la única vía de escape y recupera la ruta, confirmando la maniobra con el tono de éxito.

6. Aplicaciones Prácticas del Sistema Robótico

Con este proyecto no buscamos dar un producto definitivo y funcional pero si a una aproximación a algunos de los usos reales que se pueden dar de similares a estos dispositivos como el transporte de materiales en entornos de almacén, las líneas del suelo actúan como carriles o rutas predefinidas. En distribución hospitalaria donde el sistema puede ser adaptado para el transporte de medicamentos, muestras o material quirúrgico a través de los pasillos de un hospital. También para patrullaje automatizado el robot puede seguir una ruta perimetral fija dentro de una instalación.

7. Conclusiones y Trabajo Futuro

7.1 Conclusiones

El desarrollo de este proyecto ha permitido construir y programar un vehículo autónomo funcional, cumpliendo con los objetivos planteados al inicio del trabajo. La placa Arduino UNO R3 junto con el Shield L293D nos ha sido muy útil para controlar la tracción del vehículo. Además, comprobamos en la práctica la importancia de una buena alimentación: el uso de baterías de litio fue clave para proporcionar la corriente que exigen los motores, ya que nos dimos cuenta que con otras pilas no conseguían mover los motores.

7.2. Trabajo Futuro de Mejora

A pesar de los resultados satisfactorios, hemos detectado diversas actualizaciones que incrementarían su precisión y capacidades:

  1. Mejorar el actual algoritmo de control. Esto suavizaría significativamente las correcciones de trayectoria, eliminando las oscilaciones en las rectas.
  2. Como se observó en las pruebas, el robot esquiva bien en rectas, pero al no saber cuánto han girado sus ruedas, se pierde si intenta esquivar un obstáculo en plena curva. Esto demuestra que para un entorno real más complejo, el hardware actual necesitaría ser ampliado.
  3. Implementación de botones de apagado y encendido remotos del vehículo que facilitan su control.

También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *