Tutorial · Principiante · 18 min di lettura

Sensori robotici ultrasonori o a tempo di volo

Confronta i sensori ultrasonori e a tempo di volo per un robot, poi montali, calibrali, filtrali e convalidali per un evitamento ostacoli affidabile.

Un sensore di distanza offre a un robot qualcosa che uno paraurti non può: tempo per reagire prima del contatto. Non sostituisce il paraurti, perché un interruttore di contatto intercetta la gamba nera di una sedia, il vetro e l’ostacolo all’altezza sbagliata che ogni sensore di distanza manca. Due scelte economiche comuni sono il sonar ultrasonoro e il sensore ottico a tempo di volo (ToF). Entrambi riportano una distanza, ma interagiscono in modo diverso con le superfici. Scegliere soltanto in base alla portata massima dichiarata produce un evitamento ostacoli fragile.

La domanda utile è: quale sensore fornisce misurazioni valide per i bersagli, l’illuminazione, la geometria, la frequenza di aggiornamento e la distanza di frenatura di questo robot?

Comprendi come misura ciascun sensore

Un sensore ultrasonoro emette un impulso di suono oltre la percezione umana e misura il tempo dell’eco. La distanza corrisponde circa alla metà del tempo di percorrenza di andata e ritorno moltiplicata per la velocità del suono. La divisione per due tiene conto del viaggio fino al bersaglio e del ritorno.

Un sensore ottico a tempo di volo emette luce infrarossa modulata e stima la distanza dal segnale di ritorno. Dispositivi come la famiglia VL53 contengono internamente la temporizzazione e l’elaborazione del segnale ed espongono in genere i risultati tramite I²C.

Le loro modalità di guasto differiscono:

  • Il suono può riflettersi altrove quando incontra bersagli inclinati, morbidi, stretti o acusticamente assorbenti.
  • Più sensori ultrasonici possono udirsi a vicenda, a meno che non vengano attivati secondo una sequenza controllata.
  • I sensori ottici possono avere difficoltà con bersagli poco riflettenti, forte luce infrarossa ambiente, interferenza attraverso il vetro protettivo o bersagli fuori dal campo visivo.
  • Nessuno dei due tipi sa automaticamente se un risultato è affidabile; usa i dati di stato e qualità del segnale quando sono disponibili.
Confronto tra le aree rilevate da due sensori di distanza. Il sensore superiore emette un cono ampio di circa trenta gradi, con un piccolo ostacolo rotondo dentro il cono ma fuori dalla linea centrale, contrassegnato come ciò che viene riportato invece della parete dietro di esso. Il sensore inferiore emette un fascio stretto di circa due gradi e mezzo che raggiunge la stessa parete in un piccolo punto.
Le stesse parole, «sensore di distanza», per due aree molto diverse. Il cono riporta l'oggetto più vicino ovunque si trovi al suo interno; il punto riporta un solo punto e ignora tutto il resto. Scarica SVG

Scegli in base alla scena e al ciclo di controllo

I moduli ultrasonici sono utili quando il costo conta, i bersagli sono abbastanza ampi e un fascio acustico più largo è accettabile. Rilevano anche oggetti trasparenti che mettono in difficoltà alcuni metodi ottici. Il loro fascio può però riportare una parete vicina che non si trova direttamente davanti al robot.

I moduli ToF sono compatti, su molti dispositivi hanno una temporizzazione controllabile e possono fornire un’area di interesse più stretta. Più sensori I²C identici possono richiedere pin di disattivazione o una sequenza di assegnazione degli indirizzi. La luce solare forte e le superfici scure devono essere testate sulla piattaforma reale.

Prima di acquistare l’hardware, scrivi quattro requisiti:

  1. Distanza minima e massima utile.
  2. Periodo di aggiornamento richiesto.
  3. Ostacolo più piccolo che deve essere rilevato.
  4. Bersaglio e ambiente peggiori: tessuto nero, vetro, parete inclinata, luce solare o traffico trasversale.

Poi confronta questi requisiti con la scheda tecnica del produttore, non con una descrizione su una piattaforma di vendita.

Monta per la misura di cui hai bisogno

Metti l’asse di misura dove il robot ha bisogno di informazioni sulla distanza libera, non soltanto dove entra una staffa. Un sensore alto sul telaio può non rilevare ostacoli bassi; uno troppo basso può vedere riflessi del pavimento o componenti delle ruote. Tieni paraurti e telaio fuori dal campo visivo.

Per la sterzata reattiva, le misurazioni anteriore-sinistra, anteriore-centrale e anteriore-destra sono più informative di un singolo fascio in avanti. Tuttavia, tre sensori non devono per forza emettere contemporaneamente. Programma separatamente i ping ultrasonici e lascia tempo sufficiente perché gli echi si estinguano.

Il montaggio rigido è importante. Le vibrazioni cambiano la direzione di puntamento e il movimento del cavo può corrompere connessioni marginali. Se un sensore ottico si trova dietro una finestra protettiva, segui per quello specifico assemblaggio meccanico la procedura di calibrazione dell’interferenza indicata dal produttore.

Calibra lo scostamento e prova la ripetibilità

Posiziona un bersaglio grande e piatto perpendicolare al sensore a diverse distanze misurate con precisione nell’intero intervallo operativo. Acquisci almeno 50 letture in ogni punto. Registra:

  • distanza media o mediana riportata;
  • dispersione, per esempio minimo/massimo o deviazione standard;
  • numero di stati non validi;
  • condizioni ambientali e materiale del bersaglio.

Una differenza quasi costante è uno scostamento e può essere corretta dopo averne compresa la causa. Un errore che cambia con la distanza richiede un modello migliore o un intervallo fidabile più ristretto. Non adattare una curva complessa a una staffa instabile o a un’alimentazione difettosa.

Per un modulo ToF, esegui la calibrazione dello scostamento specificata prima della calibrazione dell’interferenza. Memorizza i dati di calibrazione e caricali all’avvio, se l’API del dispositivo lo richiede. Ricalibra dopo aver modificato la finestra protettiva o la geometria di montaggio.

Scarta le letture non valide prima di attenuare il segnale

Tratta un timeout, un codice fuori intervallo o uno stato di bassa qualità come non valido, mai come zero centimetri. Zero può comandare un arresto di emergenza, quindi convertire gli errori di comunicazione in zero crea un comportamento non sicuro.

La mediana delle ultime tre o cinque letture valide rifiuta picchi isolati senza mediarli nel segnale di controllo:

if (measurement.valid) {
  window.push(measurement.distanceMm);
  if (window.size() > 5) window.popOldest();
  filteredDistance = median(window);
}

Un filtro passa-basso rende più uniforme la visualizzazione, ma aggiunge ritardo. Il tutorial sul filtraggio dei sensori spiega questo compromesso. Conserva nei registri il valore grezzo e lo stato di validità, così il filtraggio non nasconde un sensore che sta fallendo.

Trasforma la distanza in una regola di arresto sicura

L’evitamento ostacoli deve tenere conto del movimento. Una soglia utile include la distanza di frenatura, il ritardo della misura, i ritardi di calcolo e attuazione e un margine:

stopThreshold = speed² / (2 × deceleration) + speed × delay + margin

Misura la decelerazione ottenibile sulla superficie reale anziché presupporla: il limite è la trazione µg, non qualcosa che i motori possano decidere, e i calcoli sono disponibili qui. A velocità più elevate il termine di frenatura cresce con il quadrato della velocità, quindi una soglia fissa di 15 cm non è ugualmente sicura per ogni comando.

Usa l’isteresi per evitare oscillazioni: entra nello stato di fermo sotto una soglia e riprendi soltanto sopra una soglia maggiore. Richiedi un piccolo numero di letture valide coerenti per la sterzata normale, mantenendo però una risposta deliberatamente conservativa davanti a un ostacolo vicino e credibile.

Convalida i bersagli difficili

Costruisci una matrice di prova con una parete piatta, una parete inclinata, un palo stretto, tessuto scuro, un pannello trasparente e un ostacolo in movimento. Prova vicino alla portata minima, vicino alla soglia di arresto prevista e vicino alla portata massima di funzionamento. Ripeti sotto illuminazione interna e alla luce del sole, se il robot vedrà entrambe.

Misura frequenza di rilevamento e latenza, non soltanto distanza media. Un sensore accurato il 90% delle volte ma che si blocca periodicamente per mezzo secondo può essere inaccettabile per un robot veloce.

Diagnosticare i guasti comuni

  • Scostamento stabile ovunque: verifica il punto di riferimento fisico, poi applica la calibrazione del produttore.
  • Letture ultrasoniche corte e casuali: cerca interferenza reciproca, rumore elettrico oppure echi tardivi provenienti da strutture vicine.
  • Le letture ToF peggiorano dietro una finestra: esegui la calibrazione dell’offset e dell’interferenza per quel materiale protettivo.
  • Il robot oscilla vicino a un muro: aggiungi isteresi e riduci il ritardo del filtro prima di regolare nuovamente la sterzata.
  • Rileva i muri ma perde le gambe delle sedie: la geometria del fascio e il montaggio non coprono il bersaglio richiesto.
  • Si ferma troppo tardi solo ad alta velocità: la logica della soglia ignora la distanza di frenatura e la latenza.

Usa il Simulatore di evitamento ostacoli per sperimentare portata, campo visivo, sterzata e distanza di frenatura prima di trasferire le soglie all’hardware.

Esplora il grafo

Fa parte di queste costruzioni

Progetti e percorsi di apprendimento che includono questo tutorial.

Per approfondire

Fonti