Código de búsqueda

Lección 7 de 10: Seguimiento de línea, Detección de acantilados Calibrar sensor de escala de grises Coche Raspberry Pi Pico

Esta lección es parte de: Coche inteligente Raspberry Pi Pico 4WD

Lección 7 de 10: Seguimiento de línea, Detección de acantilados Calibrar sensor de escala de grises Coche Raspberry Pi Pico

En esta lección del curso de Coche Inteligente con Raspberry Pi Pico, exploramos el fascinante mundo de la navegación autónoma combinando un servomotor, un sensor ultrasónico y el control de motores para permitir que el coche detecte y evite obstáculos. Este proyecto transforma un kit básico de tracción a las cuatro ruedas en un robot inteligente capaz de navegar en entornos dinámicos, lo que lo convierte en una excelente base para aprender sobre fusión de sensores y algoritmos de control reactivo. El valor real de este proyecto va mucho más allá del aula, ofreciendo una plataforma para aplicaciones prácticas como construir una aspiradora robótica que navegue alrededor de muebles, crear un robot de seguridad que mapee zonas seguras o desarrollar un prototipo de vehículo de reparto autónomo que pueda circular por espacios concurridos.

El núcleo de este proyecto radica en usar un servomotor para rotar un sensor ultrasónico, creando un sistema de radar simple. Al escanear el entorno de 0 a 180 grados, el coche puede medir distancias a los obstáculos e identificar el camino más despejado hacia adelante. Esta lección proporciona una guía paso a paso para implementar la lógica que interpreta estos datos del sensor para tomar decisiones de conducción inteligentes.

Hardware/Componentes

Este proyecto se basa en el kit de coche de tracción a las cuatro ruedas SunFounder Raspberry Pi Pico. Aunque el modelo exacto puede variar, los componentes principales necesarios son:

  • Placa microcontroladora Raspberry Pi Pico
  • Kit de chasis de coche inteligente SunFounder 4WD (o similar)
  • Sensor de distancia ultrasónico (por ejemplo, HC-SR04)
  • Servomotor (para rotar el sensor ultrasónico)
  • Placa controladora de motores (integrada en el kit del coche)
  • Fuente de alimentación (baterías)

Guía de Conexiones

Las conexiones para este proyecto suelen estar preconfiguradas en la placa de expansión del kit de coche SunFounder. Los pines de disparo y eco del sensor ultrasónico, junto con el pin de señal del servomotor, están conectados a pines GPIO específicos en la Raspberry Pi Pico. El controlador de motores también está conectado a la Pico para controlar la dirección y velocidad de los cuatro motores.

Para un diagrama de conexiones detallado específico de tu kit, consulta la documentación proporcionada por SunFounder. A menudo se incluye un esquema general en el manual del kit o en el sitio web del fabricante.

Explicación del Código

Esta lección se centra en la lógica y los parámetros configurables por el usuario dentro del programa de evitación de obstáculos. El código está estructurado para controlar el comportamiento del coche basándose en la entrada del sensor ultrasónico. Las variables clave que puedes ajustar para afinar el rendimiento del coche suelen estar definidas al principio del script.

Aquí están los principales ajustes configurables por el usuario que encontrarás en el código:

  • Distancia de Referencia del Radar: Este es el umbral de distancia (por ejemplo, 20 cm) que determina si un obstáculo se considera un "peligro". Si el sensor lee una distancia menor que este valor, el coche iniciará una maniobra de evitación.
  • Ángulo de Paso: Este es el incremento (por ejemplo, 10 grados) con el que el servomotor rota al escanear el entorno. Un ángulo de paso más pequeño proporciona un escaneo más detallado pero tarda más.
  • Velocidad de Avance: Esta variable (por ejemplo, 30) establece el nivel de potencia para los motores cuando el coche se mueve hacia adelante.
  • Velocidad de Giro: Esta variable (por ejemplo, 50) establece el nivel de potencia para los motores cuando el coche gira, que suele ser mayor que la velocidad de avance para asegurar un giro decisivo.
  • Ángulo de Escaneo de Avance: Este valor (por ejemplo, 50 grados) establece el rango de ángulos que el servo escaneará cuando el coche se mueve hacia adelante. Un escaneo más estrecho es más rápido y suficiente para detectar obstáculos directamente en el camino.

Para entender cómo usar estas variables, imagina que quieres que el coche sea más cauteloso. Podrías aumentar el RADAR_REFERENCE a 25 cm, haciendo que detecte y evite obstáculos desde una mayor distancia. Por el contrario, para un coche más rápido y agresivo, podrías disminuir este valor a 15 cm.

La lógica principal usa una función get_direction() para analizar los datos del sensor. Esta función convierte la matriz de lecturas de distancia en una cadena de '1's (espacio vacío) y '0's (obstáculo). Luego divide esta cadena en los ceros para encontrar el camino continuo más ancho. Basándose en la posición de este camino más ancho, la función devuelve una dirección: 'izquierda', 'derecha' o 'adelante'. El bucle principal entonces ejecuta la maniobra correspondiente.

Proyecto en Vivo/Demostración

(en el video en 02:47) El instructor comienza demostrando la función de evitación de obstáculos. El coche usa el servo para rotar el sensor ultrasónico, actuando como un radar. Mientras el coche se mueve, escanea su entorno para encontrar un camino despejado.

(en el video en 03:34) Se ejecuta el código y el coche se prueba en un área abierta. El instructor explica la estructura del código, mostrando cómo se usa la función get_distance() del módulo sonar para medir distancias. Las lecturas del sensor se muestran en la consola, demostrando su precisión y limitaciones.

(en el video en 07:45) El instructor luego abre el ejemplo "obstacle_avoid" y recorre su diagrama de flujo. Esta ayuda visual explica el proceso de toma de decisiones: el coche escanea, verifica si hay peligro y, si un camino está bloqueado, determina la mejor dirección para girar basándose en el camino abierto más ancho.

(en el video en 16:02) Se realiza una prueba en vivo. El coche detecta con éxito un obstáculo (una caja) y maniobra alrededor de él, girando a la izquierda para encontrar un camino despejado. El instructor explica los datos en tiempo real que se imprimen en la consola, mostrando '0' para obstáculo y '1' para espacio despejado.

(en el video en 22:53) Se prepara una demostración final más compleja con múltiples obstáculos. El coche navega por el recorrido, tomando decisiones de girar a la izquierda o a la derecha para evitar colisiones y encontrar una ruta despejada, mostrando la efectividad del algoritmo en un entorno más desafiante.

Capítulos

  • [00:00] Introducción a la lección
  • [01:31] Descripción general del curso y del kit
  • [02:47] Demostración de la función de evitación de obstáculos
  • [03:34] Prueba del sensor ultrasónico
  • [07:45] Comprensión del algoritmo de evitación de obstáculos
  • [12:49] Recorrido por el código: bucle principal y lógica
  • [16:02] Pruebas en vivo y análisis de datos
  • [22:53] Demostración del recorrido de obstáculos complejo
Sin código adjunto.

Recursos y referencias

Aún no hay recursos.

Archivos📁

No hay archivos disponibles.