Come gestire la diafonia del sonar


10

Il nostro robot ha una matrice circolare di 12 sensori sonar che assomiglia a questo:

inserisci qui la descrizione dell'immagine

I sensori sonar stessi sono abbastanza buoni. Usiamo un filtro passa-basso per gestire il rumore e le letture sembrano abbastanza accurate. Tuttavia, quando il robot incontra una superficie piana come un muro, succede qualcosa di strano. I sonar non mostrano letture che indicherebbero un muro, invece, appare come una superficie curva.

La trama di seguito è stata fatta quando il robot era di fronte a un muro. Vedi la curva nelle linee blu, rispetto alla linea rossa diritta. La linea rossa è stata prodotta utilizzando una telecamera per rilevare il muro, dove le linee blu mostrano letture sonar filtrate.

inserisci qui la descrizione dell'immagine

Riteniamo che questo errore sia dovuto alla diafonia, in cui l'impulso di un sensore sonar rimbalza sulla parete ad angolo e viene ricevuto da un altro sensore. Questo è un errore sistematico, quindi non possiamo davvero affrontarlo come faremmo con il rumore. Ci sono soluzioni là fuori per correggerlo?


correlati: "Domanda sul telemetro a ultrasuoni multipli" . Devo copiare e incollare la mia risposta da lì a qui?
David Cary,

Risposte:


10

Questo è un problema comune e uno dei tanti. Il rilevamento acustico è un campo di studio complicato, una parte significativa della quale viene spesa per indovinare quale percorso ha preso un'onda sonora tra l'invio e la ricezione. Come hai notato, supponendo che sia uscito e tornato indietro produrrà risultati strani nella pratica.

Per risolverlo davvero, dovrai utilizzare un sistema che posiziona una frequenza e / o una lunghezza di tono uniche su ciascun sensore. Ciò può essere portato a livelli estremi significativi, ad esempio la modulazione della larghezza di impulso pseudo-casuale a salto di frequenza per eliminare la diafonia dei sensori sonar nei robot mobili .

C'è anche una soluzione a bassa tecnologia, che è abbastanza semplice nel concetto. Se si desidera semplicemente rilevare la diafonia, sarebbe una questione di sparare un impulso di un singolo sensore tra l'accensione di tutti gli impulsi dei sensori. Se rilevi l'impulso di ritorno con qualsiasi altro sensore, sai di essere in una situazione di crosstalk.

In pratica, questo è abbastanza dispendioso: si noti che ciò dimezza il numero di campioni che è possibile prelevare. Quindi puoi migliorare l'implementazione dividendo i sensori in gruppi in cui ciascun membro del gruppo è abbastanza lontano dagli altri da non ricevere diafonia. La versione più solida di questo approccio è quella di rendere i gruppi stessi pseudocasuali che non solo consentono agli errori di calcolare la media nel tempo, ma aiutano il rilevamento della diafonia su base di un singolo sensore.

Nel tuo caso particolare, hai l'ulteriore vantaggio di un sensore della fotocamera che hai mostrato sta restituendo un valore più corretto per gli intervalli. Le strategie per combinare misurazioni separate (e forse in conflitto) in una singola stima più accurata è il suo argomento molto ampio (chiamato fusione , esempio 1 , esempio 2 ), ma molto rilevante per quello che stai facendo qui.


5

Alcuni sensori, come Maxbotix MB1200 XL-MaxSonar-EZ0, hanno un sistema di collegamento in cascata in cui un sensore attiva il sensore successivo una volta terminata la misurazione. In questo modo puoi avere N sensori e assicurarti che uno solo spari alla volta ma che il sensore successivo si attivi non appena il primo ha raccolto il suo ritorno. Questa soluzione è semplice ma ovviamente riduce notevolmente la quantità di dati ottenuti per unità di tempo. Le soluzioni di Ian sono molto più vicine all'ottimale.


4

È possibile utilizzare più sensori a ultrasuoni su un singolo robot? Sì: "Utilizzo di più sensori sonar" .

Come hai già capito, un sensore riceve spesso echi di ping inviati da un altro sensore. Esistono diversi modi per gestire la sensibilità incrociata, all'incirca nell'ordine del primo più semplice:

  • Effettua il ping di un solo trasduttore alla volta, ignorando tutti gli altri trasduttori mentre attendi che gli "echi fantasma" del trasduttore attuale si spengano prima di eseguire il ping del trasduttore successivo. Questo è molto più veloce della rotazione meccanica di un singolo trasduttore. Forse questo sarà abbastanza veloce, a meno che il tuo robot non stia sbattendo contro le cose quasi alla velocità del suono.
  • Utilizzare trasmettitori o ricevitori (o entrambi) ad angolo del fascio relativamente ristretti per sensore e aumentare l'angolazione da un sensore a quello successivo in modo che un sensore non riesca a sentire l'eco da un altro (a meno che il materiale davanti al trasduttore non provochi strani riflessi laterali ) - i sensori angolati all'incirca allo stesso modo dell'angolo del raggio. Purtroppo, questo lascia "punti ciechi" tra i trasduttori in cui gli oggetti non possono essere visti da nessun trasduttore.
  • Qualche combinazione - ad esempio, aumenta l'angolo da un sensore all'altro in modo che un sensore ascolti solo echi dai suoi 2 vicini (circa metà dell'angolo del fascio); quindi alternare tra il ping dei trasduttori pari (ignorando i trasduttori dispari) e il ping dei trasduttori dispari (ignorando i trasduttori pari).
  • Ogni trasduttore funziona a una frequenza diversa. Purtroppo, tutti i trasduttori ultrasonici a basso costo, con poche eccezioni , sono sintonizzati per risuonare a 40 kHz. Durante l'ascolto di una varietà di segnali, questi trasduttori possono solo "sentire" segnali entro pochi kHz di 40 kHz. Dovrai bilanciare (a) Più lontano dai 40 kHz che usi su un trasduttore progettato per 40 kHz, meno sensibile è, quindi vuoi una frequenza "relativamente vicina" a 40 kHz; e (a) Più tutte le frequenze sono vicine, più è difficile discriminarle, quindi si desidera un insieme di frequenze che sono diffuse "relativamente distanti". Non so se c'è un buon compromesso o no. In caso contrario, sei bloccato con (c) utilizzare sensori più costosi sintonizzati su altre frequenze,sensori di "larghezza di banda larga" non sintonizzati su nessuna frequenza particolare.
  • Utilizzare vari tempi di trasmissione per escludere echi fantasma. Supponiamo che tu trasmetta da sinistra, ritardi di 2 ms (non abbastanza per far decadere gli echi), quindi trasmetti da destra, ... dopo che gli echi si attenuano, quindi trasmettono da sinistra, ritardano 3 ms, quindi trasmettono da la destra. Se il ricevitore giusto riceve un'eco dopo 5 ms più tardi entrambe le volte, allora puoi essere abbastanza sicuro che sia un'eco reale; se il ricevitore destro riceve un'eco dopo 5 ms la prima volta, 6 ms dopo la seconda volta, è probabilmente un fantasma dal ricevitore sinistro. (Esistono tecniche di "spettro esteso" molto più sofisticate per separare molti trasmettitori che utilizzano tutti la stessa frequenza contemporaneamente.)
  • Combina i segnali di tutti i ricevitori. Se hai un trasmettitore centrale che suona in tutte le direzioni (o equivalentemente hai i trasmettitori puntati in ogni direzione, e li suoni tutti nello stesso istante), e il primo eco che ricevi indietro colpisce prima il ricevitore sinistro (poi dopo quello destro il ricevitore sente un'eco), sai che l'ostacolo più vicino è più vicino al lato sinistro rispetto al lato destro. (Esistono tecniche di "phased array" più sofisticate che combinano i segnali di tutti i ricevitori e tecniche di "beamforming" ancora più sofisticate per regolare leggermente i tempi di trasmissione di tutti i trasmettitori.)

PS: Hai visto "Infrarossi contro ultrasuoni: cosa dovresti sapere" ?

(Sì, l'ho già detto in precedenza, alla "Domanda sul telemetro a ultrasuoni multipli" ).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.