In EKF-SLAM, perché abbiamo bisogno dell'odometria quando esiste un sensore più affidabile? Inoltre, tutti gli algoritmi SLAM sono basati sulle funzionalità?


8

Nel libro di SLAM per i manichini, perché abbiamo persino bisogno dell'odometria quando il robot userebbe i dati recuperati dallo scanner laser che è più accurato dell'odometria? Perché non semplicemente ripetere lo scanner laser e allontanarsi dall'odometria? C'è qualche contributo dell'odometria che il laser scanner non ha? Inoltre, tutti gli algoritmi SLAM sono basati sulle funzionalità?


Una domanda alla volta, per favore. Ma ho provato a rispondere ad entrambi. Ora per favore non modificare la domanda per chiedere di più. Invece, porre domande separate. Grazie!
Josh Vander Hook,

Risposte:


10

Lo stai leggendo troppo attentamente.

  • Non hai "bisogno" dell'odometria. SLAM è semplicemente un modo per fondere qualsiasi stima del sensore in una stima coerente dello stato del robot.

  • "Basato su funzionalità" non significa necessariamente che è necessario disporre di funzionalità identificabili ovunque nell'ambiente.

  • Primo principio della fusione del sensore: due stime sono meglio di una!

Esempio

Non ho letto il libro "per i manichini" ma se non fanno il seguente esempio numerico, darei fuoco al libro e ne prenderei uno migliore. E se fare avere questo esempio, allora mi chiedo perché tu non lo dici!

(puoi seguire la matematica qui )

Un robot si trova nella posizione e si sta spostando verso destra (aumentando ). In questo mondo perfetto, la dinamica e le modalità del sensore sono lineari. (altrimenti usa EKF, PF o qualche variante).x=0x

  • C'è un muro esattamente cui il robot può misurare la distanza.x=10
  • Il robot ha uno scanner laser per ottenere la distanza con la varianza del sensoreσl2=.1
  • Il robot può misurare la distanza percorsa con gli odometri utilizzando la varianza del sensore . Chiaramente il laser è più preciso degli odos.σo2=.5

Ecco come il robot gestisce SLAM in questo semplice ambiente. (nota che questa è in realtà localizzazione poiché non stiamo aggiornando la posizione del muro).

  • Il robot prova a spostare un'unità a destra.
  • L'odometria misurax=.9
  • Lo scanner laser dice che sei a unità dalla parete. (sottintendendo che sei a 1.2)8.8

Domanda : dove sei?

  • Scegli il sensore migliore? In questo caso, il laser è il migliore, giusto? Quindi ovviamente sono .x=1.2

  • Scegli quello "più vicino" a quello che ti aspetti? Bene, in questo caso penso che dovremmo usare l'odometria, dal momento che è più vicino a quello che intendevo (spostare un'unità)..9

  • Forse potresti fare una media dei due? Bene, va meglio, ma è suscettibile agli outlier.

  • I brillanti principi della fusione dei sensori ti spiegano come rispondere alla domanda come segue:

La stima minima al quadrato medio della posizione del robot è data da:

xmmse=σl2σo2+σl2(.9)+σo2σo2+σl2(1.2)
xmmse=.1.6(.9)+.5.6(1.2)
xmmse=1.15

... a meno che non abbia rovinato l'algebra da qualche parte. Le persone localizzano gli aeroplani usando la matematica non molto più complicata di così.


6

Se leggi i principi della fusione dei sensori, otterrai sempre una stima migliore combinando i dati nel modo giusto. Ad esempio, se si misura la temperatura in una stanza con 3 diversi sensori di temperatura, non è l'ideale utilizzare solo il sensore migliore. Il caso ideale sarebbe quello di creare una combinazione ponderata di ciascun sensore, in cui il peso del sensore è proporzionale a uno rispetto alla varianza di quel sensore. Per non parlare, i dati dell'odometria sono MOLTO buoni. È l'estrazione di punti di riferimento che è rumorosa e molto probabilmente avrà una varianza più elevata.

Se ci pensate da una prospettiva di alto livello, è anche necessario disporre di un aggiornamento del movimento basato sull'odometria. Se avessi usato solo punti di riferimento, avresti casi ambigui. Prendiamo ad esempio il caso in cui identifichi solo un punto di riferimento. Avresti una distanza z dal tuo robot al punto di riferimento, ma questo si associerebbe a un numero infinito di punti in un cerchio attorno al punto di riferimento. Se identifichi zero punti di riferimento, non puoi fare nulla! Includendo l'odometria, non abbiamo più un'ambiguità. Supponendo che ci stiamo localizzando in un piano 2D (x, y), allora dovresti garantire di avere letture per almeno 3 punti di riferimento per triangolare la tua posizione senza odometria e non puoi garantire tale garanzia in ambienti normali.

Infine, un encoder può essere campionato nell'ordine di 50Hz, mentre un LIDAR può essere campionato solo a circa 6-7Hz (non citarmi su quelle frequenze). Ciò significa che è possibile aggiornare la posizione corrente molto più frequentemente tramite odometria rispetto alle letture del sensore. Questo non sta nemmeno tenendo conto del tempo impiegato per elaborare la lettura del sensore per identificare i punti di riferimento!


3

Solo per sommare questo, usare l'odometria per stimare la posizione del robot è molto più veloce rispetto all'utilizzo dei dati da uno scanner laser. Nella maggior parte dei casi, i dati provenienti da uno scanner di portata vengono gestiti come PointCloud 2D. Ciò significa che per stimare la posa relativa tra le posizioni A, B è necessario allineare le corrispondenti PointCloud e trovare la posa più probabile di tale operazione di allineamento. Per fare ciò dovresti usare ICP o un algoritmo simile, che a causa della sua natura iterante è intensivo dal punto di vista computazionale.

D'altra parte, usando le informazioni sull'odometria (ad es. Dagli encoder a ruota) devi solo aggiungere alla stima corrente della tua posa che è solo la somma di due funzioni di densità di probabilità (stima corrente + lettura dell'odometria incrementale)


-1

I principi EKF sono stati ben spiegati nelle altre risposte.

Vorrei aggiungere che puoi fare SLAM senza usare Odometry, ad esempio usando solo un LIDAR.

"Inoltre, tutti gli algoritmi SLAM sono basati sulle funzionalità?"

No, non tutto ovviamente

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.