Evitare gli ostacoli

In questo blog, dimostriamo come eseguire il nostro algoritmo di evitamento degli ostacoli utilizzando raspberry pi e un rover Sphero RVR. L'obiettivo primario è quello di esplorare l'ambiente circostante rilevando ed evitando gli ostacoli. Questo algoritmo utilizza l'algoritmo di rilevamento degli ostacoli per identificare gli ostacoli. Per maggiori dettagli, puoi controllare il Blog precedente.

La configurazione del rover Raspberry Pi + Sphero RVR è mostrata di seguito. Una telecamera mobile è stata posizionata di fronte per registrare continuamente il movimento.


Eseguiamo un codice python per ottenere l'output, i codici sorgente possono essere trovati di seguito.

Codice sorgente API da GitHub

Dovrai avere una chiave di abbonamento per usarlo, puoi controllare il blog introduttivo su come ottenere la chiave di abbonamento gratuita.

Per eseguire il rover, dobbiamo regolare 4 impostazioni.

  1. MinSafeDistanceFactor: Questo per specificare la distanza minima di sicurezza tra il rover e l'ostacolo in qualsiasi direzione. Questo è un numero in virgola mobile da 0,1 a 1. I valori rappresentano la distanza come fattore di dimensione della riga della cornice dell'immagine, cioè se il valore è 0,5, non devono essere presenti ostacoli per metà dell'immagine. È importante notare che il centro del rover nell'immagine è la parte inferiore più riga e colonna centrale.
  2. MinPathWidthFactor: questo per specificare la larghezza minima del percorso disponibile tra gli ostacoli che il rover può attraversare nel punto di distanza minima di sicurezza. Questo è un numero in virgola mobile da 0,1 a 1. I valori rappresentano la distanza come fattore di dimensione della colonna della cornice dell'immagine, cioè se il valore è 0,5, almeno metà dell'immagine è priva di ostacoli nel punto di distanza minima.
  3. MinObjectHeightFactor: Questo per specificare l'altezza minima dell'ostacolo da considerare valida. Questo è un numero in virgola mobile da 0,1 a 1. I valori rappresentano la distanza come fattore di dimensione della riga della cornice dell'immagine. Questo per evitare falsi positivi dovuti a pixel spuri o ostacoli che possono essere attraversati.
  4. MinObjectWidthFactor: questo per specificare la larghezza minima dell'ostacolo da considerare valido. Questo è un numero in virgola mobile da 0,1 a 1. I valori rappresentano la distanza come fattore di dimensione della colonna della cornice dell'immagine. Questo per evitare falsi positivi dovuti a pixel spuri o ostacoli che possono essere attraversati.

L'output ha tre parametri:

  1. BestDirectionAngle: specifica l'angolo che presenta il minor numero di ostacoli. Questo valore può variare da -90 a +90. L'angolo di 0 gradi corrisponde a nessun cambiamento di direzione, l'angolo negativo corrisponde alla direzione migliore a sinistra del fotogramma e l'angolo positivo corrisponde alla direzione migliore a destra del fotogramma.
  2. MaxDistanceFactor: specifica la distanza massima misurata dall'ostacolo nella direzione migliore. Questo è un numero in virgola mobile da 0 a 1. I valori rappresentano la distanza come fattore di dimensione della riga della cornice dell'immagine.
  3. MaxPathWidthFactor: specifica la larghezza massima del percorso disponibile tra gli ostacoli nella direzione migliore. Questo è un numero in virgola mobile da 0 a 1. I valori rappresentano la distanza come fattore di dimensione della colonna della cornice dell'immagine.

Se viene identificato correttamente un percorso attraversabile che concorda con tutta la soglia impostata, 'StatusFlag' restituirà 1, altrimenti restituirà 0.

Le immagini di input ed output elaborate di esempio sono mostrate come riferimento di seguito

Original Image Path Image

Original Image Path Image

Le immagini mostrano l'immagine originale e l'immagine elaborata mostra il percorso migliore. Nell'immagine elaborata, un cono verde rappresenta un percorso valido e un rosso rappresenta un percorso che non soddisfa tutte le condizioni.

Un video di esempio di questo può essere visualizzato di seguito. Le impostazioni per questi sono

  1. MinSafeDistanceFactor = 0,5
  2. MinPathWidthFactor = 0,4
  3. MinObjectHeightFactor = 0,1
  4. MinObjectWidthFactor = 0,1

In questa implementazione, ci sono alcune condizioni aggiuntive che sono state messe in atto per evitare ostacoli. Nel caso in cui la direzione migliore sia superiore a 45 gradi dal centro, non è possibile identificare immediatamente tutti gli ostacoli poiché il campo visivo è limitato. In questi casi, il rover gira verso la nuova direzione e attende una conferma se il percorso è privo di ostacoli. Se sì, continua ad attraversare nella nuova direzione, altrimenti, ruoterà e attenderà la conferma.

Nel nostro prossimo blog, mostriamo come funziona l'algoritmo di evitamento degli ostacoli di notte usando IR.

Controlla altri blog!

Trova altri blog insieme ad altri video interessanti e documenti tecnici qui sotto!

Contattaci

Hai domande? Mandaci un messaggio e ti risponderemo presto!

È richiesto un nome valido.
Inserisci un indirizzo email valido.
Oggetto:
L'oggetto del messaggio è obbligatorio.
Inserisci il tuo messaggio