Cerca codice

Lezione 7 di 10: Inseguimento della linea, Rilevamento del precipizio Calibrare il sensore in scala di grigi Auto Raspberry Pi Pico

Questa lezione fa parte di: Raspberry Pi Pico 4WD Smart Car

Lezione 7 di 10: Inseguimento della linea, Rilevamento del precipizio Calibrare il sensore in scala di grigi Auto Raspberry Pi Pico

In questa lezione del corso Raspberry Pi Pico Smart Car, esploriamo l'affascinante mondo della navigazione autonoma combinando un servomotore, un sensore a ultrasuoni e il controllo dei motori per consentire all'auto di rilevare ed evitare gli ostacoli. Questo progetto trasforma un kit a quattro ruote motrici di base in un robot intelligente in grado di navigare in ambienti dinamici, rendendolo un'eccellente base per apprendere la fusione dei sensori e gli algoritmi di controllo reattivo. Il valore reale di questo progetto va ben oltre l'aula, offrendo una piattaforma per applicazioni pratiche come la costruzione di un aspirapolvere robotico che si muove attorno ai mobili, la creazione di un robot di sorveglianza che mappa le zone sicure o lo sviluppo di un prototipo per un veicolo di consegna autonomo in grado di muoversi in spazi affollati.

Il cuore di questo progetto sta nell'usare un servomotore per ruotare un sensore a ultrasuoni, creando un semplice sistema radar. Scansionando l'ambiente da 0 a 180 gradi, l'auto può misurare le distanze dagli ostacoli e identificare il percorso più libero in avanti. Questa lezione fornisce una guida passo passo sull'implementazione della logica che interpreta questi dati del sensore per prendere decisioni di guida intelligenti.

Hardware/Componenti

Questo progetto si basa sul kit auto a quattro ruote motrici SunFounder Raspberry Pi Pico. Sebbene il modello esatto possa variare, i componenti principali richiesti sono:

  • Scheda microcontrollore Raspberry Pi Pico
  • Kit telaio auto intelligente SunFounder 4WD (o simile)
  • Sensore di distanza a ultrasuoni (es. HC-SR04)
  • Servomotore (per ruotare il sensore a ultrasuoni)
  • Scheda driver motori (integrata nel kit auto)
  • Alimentazione (batterie)

Guida al Cablaggio

Il cablaggio per questo progetto è tipicamente preconfigurato sulla scheda di espansione del kit auto SunFounder. I pin trigger ed echo del sensore a ultrasuoni, insieme al pin di segnale del servomotore, sono collegati a specifici pin GPIO sul Raspberry Pi Pico. Il driver motori è anche collegato al Pico per controllare la direzione e la velocità dei quattro motori.

Per uno schema di cablaggio dettagliato specifico per il tuo kit, fai riferimento alla documentazione fornita da SunFounder. Uno schema generale è spesso incluso nel manuale del kit o sul sito web del produttore.

Spiegazione del Codice

Questa lezione si concentra sulla logica e sui parametri configurabili dall'utente all'interno del programma di evitamento ostacoli. Il codice è strutturato per controllare il comportamento dell'auto in base all'input del sensore a ultrasuoni. Le variabili chiave che puoi regolare per ottimizzare le prestazioni dell'auto sono tipicamente definite all'inizio dello script.

Ecco le principali impostazioni configurabili dall'utente che troverai nel codice:

  • Distanza di Riferimento Radar: Questa è la distanza soglia (es. 20 cm) che determina se un ostacolo è considerato un "pericolo". Se il sensore legge una distanza inferiore a questo valore, l'auto avvierà una manovra di evitamento.
  • Angolo di Passo: Questo è l'incremento (es. 10 gradi) con cui il servomotore ruota durante la scansione dell'ambiente. Un angolo di passo più piccolo fornisce una scansione più dettagliata ma richiede più tempo.
  • Velocità Avanti: Questa variabile (es. 30) imposta il livello di potenza per i motori quando l'auto si muove in avanti.
  • Velocità di Sterzata: Questa variabile (es. 50) imposta il livello di potenza per i motori quando l'auto sta girando, che è tipicamente più alta della velocità avanti per garantire una svolta decisa.
  • Angolo di Scansione Avanti: Questo valore (es. 50 gradi) imposta l'intervallo di angoli che il servo scansionerà quando l'auto si muove in avanti. Una scansione più stretta è più veloce e sufficiente per rilevare ostacoli direttamente sul percorso.

Per capire come usare queste variabili, immagina di volere che l'auto sia più prudente. Potresti aumentare RADAR_REFERENCE a 25 cm, facendole rilevare ed evitare gli ostacoli da una distanza maggiore. Al contrario, per un'auto più veloce e aggressiva, potresti diminuire questo valore a 15 cm.

La logica principale usa una funzione get_direction() per analizzare i dati del sensore. Questa funzione converte l'array di letture di distanza in una stringa di '1' (spazio libero) e '0' (ostacolo). Poi divide questa stringa in corrispondenza degli zeri per trovare il percorso continuo più ampio. In base alla posizione di questo percorso più ampio, la funzione restituisce una direzione: 'sinistra', 'destra' o 'avanti'. Il ciclo principale esegue quindi la manovra corrispondente.

Progetto/Dimostrazione dal Vivo

(nel video a 02:47) L'istruttore inizia dimostrando la funzione di evitamento ostacoli. L'auto usa il servo per ruotare il sensore a ultrasuoni, fungendo da radar. Mentre l'auto si muove, scansiona l'ambiente circostante per trovare un percorso libero.

(nel video a 03:34) Il codice viene eseguito e l'auto viene testata in un'area aperta. L'istruttore spiega la struttura del codice, mostrando come la funzione get_distance() del modulo sonar viene usata per misurare le distanze. Le letture del sensore vengono visualizzate sulla shell, dimostrandone l'accuratezza e i limiti.

(nel video a 07:45) L'istruttore apre quindi l'esempio "obstacle_avoid" e ne illustra il diagramma di flusso. Questo supporto visivo spiega il processo decisionale: l'auto scansiona, controlla il pericolo e, se un percorso è bloccato, determina la direzione migliore per girare in base al percorso libero più ampio.

(nel video a 16:02) Viene eseguito un test dal vivo. L'auto rileva con successo un ostacolo (una scatola) e lo aggira, girando a sinistra per trovare un percorso libero. L'istruttore spiega i dati in tempo reale stampati sulla shell, mostrando '0' per ostacolo e '1' per spazio libero.

(nel video al minuto 22:53) Viene impostata una dimostrazione finale più complessa con molteplici ostacoli. L'auto percorre il percorso, prendendo decisioni per svoltare a sinistra o a destra per evitare collisioni e trovare un percorso libero, mostrando l'efficacia dell'algoritmo in un ambiente più impegnativo.

Capitoli

  • [00:00] Introduzione alla lezione
  • [01:31] Panoramica del corso e del kit
  • [02:47] Dimostrazione della funzione di evitamento ostacoli
  • [03:34] Test del sensore a ultrasuoni
  • [07:45] Comprensione dell'algoritmo di evitamento ostacoli
  • [12:49] Analisi del codice: ciclo principale e logica
  • [16:02] Test dal vivo e analisi dei dati
  • [22:53] Dimostrazione del percorso a ostacoli complesso
Nessun codice allegato.

Risorse e riferimenti

Nessuna risorsa ancora.

File📁

Nessun file disponibile.