L'idea alla base di questo approccio consiste nel determinare il vettore spostamento tra due scansioni acquisite in posizioni diverse. Queste vengono prima riferite entrambe a un sistema di riferimento assoluto, confrontate e rototraslate una rispetto all'altra, in modo che le due scansioni si sovrappongano in maniera ottimale. Il vettore di spostamento così determinato, viene utilizzato quindi per la stima dello spostamento effettuato dal robot: in questo modo si mantiene piccolo l'errore odometrico e si rende più agevole il processo di costruzione della mappa.
Lu e Milios in [37] hanno proposto un algoritmo di scan matching che lavora su dati ottenuti da scansioni laser, chiamato IDC (Iterative Dual Correspondence).
Date due scansioni,
e
, l'algoritmo genera un allineamento
approssimativo utilizzando i dati odometrici e quindi
raffina l'allineamento cercando di minimizzare la
distanza tra le due scansioni, definita dalla seguente funzione:
Per ogni punto
di
viene determinata, una corrispondenza con
un punto
di
. Tutte le corrispondenze così generate
vengono utilizzate per trovare la rototraslazione relativa risolvendo
un sistema con il metodo dei minimi quadrati atto a minimizzare la distanza,
definita in (2.3). Il processo viene iterato più volte fino a quando non converge.
La ricerca delle corrispondenze avviene per mezzo di due regole, una che
considera le relazioni di distanza e una che tiene
in considerazione la rotazione relativa tra le due scansioni.
La prima regola è la closet-point rule (CPR), che genera un'associazione
tra i punti appartenenti alle due scansioni basandosi sulla relazione di vicinanza tra
due punti. Ad ogni punto di
viene associato il punto più
vicino di
e viene generata la coppia.
Generate tutte le coppie possibili la somma delle distanze tra i punti associati
diviene la distanza da minimizzare attraverso il metodo dei minimi
quadrati. Questa regola mette in evidenza le componenti
relative alla traslazione delle due mappe. La seconda regola, detta matching-range-point rule
(MRPR) permette di generare corrispondenze tra le due scansioni, secondo
un criterio che tiene conto della rotazione relativa.
La determinazione delle coppie viene fatta in base al seguente criterio:
dato un punto
della scansione
, il suo corrispondente punto
nello scan
sarà dato dalla relazione
dove
è la matrice di rotazione e
il vettore di traslazione. Se si ritiene trascurabile la traslazione si ottiene che
, poiché le due scansioni
differiscono per la sola componente rotazionale.
Allo stesso modo si può assumere che per l'angolo polare
di
e
di
valga la seguente relazione
. La ricerca della corrispondenza avviene quindi
cercando il punto
il cui angolo polare
stia
in un intervallo
e il modulo di
sia il più
vicino possibile a quello di
, dove
indica un bound per la rotazione.
Applicando entrambe le regole si otterranno informazioni precise sia per la traslazione, che per la rotazione relative. A ogni iterazione vengono eseguiti i seguenti passi:
L'uso di una mappa a punti rende l'algoritmo proposto da Lu e Milios applicabile sia in ambienti
poligonali, che in ambienti irregolari.
Ciò che penalizza questo metodo è il processo di individuazione delle corrispondenze che influisce sulle prestazioni dell'algoritmo: il metodo appena discusso è caratterizzato da una complessità pari a
, dove con
si è indicato il numero di punti nella mappa.
Esso è tuttavia efficace se il numero di punti costituenti la mappa non è eccessivamente
elevato. Nella presente tesi questo metodo è stato implementato con successo e affiancato
ad una procedura di clustering atta ad aumentarne le prestazioni.
Il metodo sviluppato in [63]
e successivamente implementato in [62] propone invece un
approccio statistico al problema del mapping.
Il robot è dotato di uno scanner rotante a infrarossi,
in grado restituire una mappa a punti dell'ambiente mediante una scansione di 360 gradi.
A ogni movimento del robot la scansione dell'ambiente viene confrontata con la scansione ottenuta
al passo precedente per determinare lo spostamento compiuto dal
robot. Lo spostamento viene descritto tramite un vettore, che
indica la traslazione lungo l'asse
e l'asse
e un angolo
, che rappresenta la rotazione. Il metodo si basa sulla costruzione,
per ognuna delle due mappe, di istogrammi statistici per ciascuna
delle tre grandezze da determinare, l'angolo
e gli
spostamenti
e
.
Il metodo sfrutta le proprietà geometriche invarianti rispetto alle rotazioni e alle traslazioni; in particolare, la distribuzione dell'angolo formato dal vettore congiungente due punti consecutivi della mappa viene utilizzata per determinare la rotazione, mentre la distribuzione della direzione dei punti lungo i due assi per il calcolo della traslazione. Nel caso della rotazione, ad esempio, per ogni mappa viene costruito il relativo istogramma che descrive, su un intervallo da
gradi a
gradi, la distribuzione degli angoli formati dal vettore che unisce due punti consecutivi della mappa. La distribuzione di questi angoli è una proprietà invariante rispetto alla
rotazione: considerate due mappe identiche rototraslate tra loro, i grafici dei due istogrammi avranno lo stesso
andamento, sfasato però esattamente dell'angolo
della rotazione.
Alle due distribuzioni così ottenute viene applicata la funzione di cross-correlazione nella forma discreta, in base alla risoluzione con cui si è costruito l'istogramma. La funzione di cross-correlazione in forma discreta ha la seguente forma:
![]() |
(2.4) |
dove
è il numero di classi utilizzate per la costruzione dell'istogramma. La funzione di cross-correlazione permette di misurare la correlazione tra le due funzioni stocastiche
discrete
e
; il valore di tale funzione presenta un massimo in
se
.
Il valore angolare associato al massimo della funzione di correlazione
corrisponde all'angolo di rotazione cercato. Dal momento che
la funzione potrebbe essere caratterizzata da più massimi relativi
caratterizzati da valori simili, è necessario ricorrere all'informazione
odometrica per disambiguare la scelta dell'angolo di rotazione.
Lo stesso tipo di procedura, una volta ruotata una mappa rispetto
all'altra dell'angolo
trovato, viene applicata alle
direzioni
e
per determinare l'entità delle traslazioni,
eventualmente ricorrendo all'odometria per filtrare i valori
ottenuti dalla funzione di cross-correlazione.
Il metodo proposto da Cox [15] utilizza il robot Blanche per la navigazione autonoma all'interno di ambienti strutturati come uffici o in contesti industriali. Il sistema di localizzazione del robot si basa su tre assunzioni fondamentali. In primo luogo viene fornita una mappa a priori dell'ambiente, rappresentata come una collezione di segmenti in uno spazio bidimensionale. In secondo luogo, un algoritmo iterativo confronta la mappa a punti fornita di volta in volta dal sensore a bordo del robot, un telemetro a infrarosso, con il modello a priori, trovando la trasformazione che permette la migliore sovrapposizione tra i due modelli ambientali. Infine, la trasformazione trovata viene utilizzata per determinare la posa del robot integrandola con l'informazione proveniente dell'odometria.
Gutmann e Schlegel in [28] hanno ripreso e integrato l'algoritmo IDC con l'algoritmo proposto da Cox [15]. Utilizzando uno scanner laser hanno testato i due algoritmi e successivamente hanno introdotto per ognuno di essi alcune varianti al fine di costruire un sistema di scan matching che combini in maniera ottimale i vantaggi offerti dai due algoritmi, sia in termini di prestazioni sia in termini di tipologia di ambiente.
Per velocizzare i tempi di elaborazione, un filtro viene applicato alle due mappe prima dell'esecuzione dell'algoritmo IDC: il filtro sostituisce gruppi di punti contigui e molto vicini con un unico punto che rappresenta il centro di gravità dell'insieme di punti. Questo ha il vantaggio di ridurre la distribuzione dei punti nella mappa rendendola più uniforme senza perdita di eccessiva informazione.
Per quanto riguarda l'algoritmo di Cox, è stata introdotta una modifica per evitare la necessità di un modello a priori dell'ambiente: invece di un modello predefinito, si utilizza come riferimento per lo scan matching una delle mappe acquisite in precedenza. Questa mappa (a punti) viene passata attraverso un filtro per l'estrazione dei segmenti che andranno a comporre la mappa da usare come riferimento. La mappa corrente viene filtrata attraverso un filtro per l'estrazione di segmenti in modo da mantenere solamente i punti che possono essere approssimati da un segmento.
Sulla base di queste modifiche, i due algoritmi sono stati combinati assieme per ottenere un nuovo algoritmo per lo scan matching, chiamato CSM (Combined Scan Matcher). L'idea è quella di utilizzare uno dei due algoritmi modificati in base alla tipologia di ambiente in cui si viene a trovare il robot. In particolare in ambienti non poligonali viene utilizzato il metodo IDC mentre in ambienti poligonali, caratterizzati da pareti lunghe ben descrivibili da linee e segmenti, viene utilizzato il metodo di Cox. Il criterio di scelta tra i due metodi è determinato dal numero di punti che possono essere approssimati con dei segmenti.
Prima di processare le mappe, viene applicato un filtro di proiezione a entrambe le mappe per eliminare da ciascuna di esse i punti non visibili dal punto in cui è stata presa l'altra mappa, nella stessa maniera già sperimentata da Lu e Milios in [37]. In questo modo si ha una riduzione ulteriore del numero di punti da considerare nelle associazioni punto-punto dell'IDC o nelle associazioni punto-segmento dell'algoritmo di Cox. Per l'applicazione del filtro è necessaria l'informazione odometrica.
L'algoritmo CSM viene utilizzato soprattutto per la localizzazione del robot nell'ambiente. Nelle sperimentazioni effettuate dai due autori attraverso l'implementazione del sistema robotico AMOS (Autonomous MObile System), non viene costruita alcuna mappa globale dell'ambiente: al contrario, è necessaria una prima fase di esplorazione dell'ambiente in cui il robot naviga nell'ambiente, eventualmente tramite comandi manuali, per acquisire le mappe. Le mappe così ottenute vengono in un secondo momento processate per ottenere una mappa globale e, tramite l'algoritmo IDC, una matrice contenente, per ogni coppia di mappe, la stima della relativa posizione. L'insieme di mappe e di posizioni ottenute vengono poi trasferite nel robot come mappe di riferimento. A ogni nuova acquisizione, in base alle stime fornite dall'apparato odometrico viene scelta una mappa come riferimento per lo scan matching. Il metodo è poi stato ripreso in studi successivi in [27] e in [46]: in questi lavori viene eliminata la fase di esplorazione iniziale e vengono proposti dei metodi incrementali per la costruzione di una mappa globale contenente sia informazioni geometriche sia informazioni di carattere topologico. Viene mantenuto lo schema dell'algoritmo CSM per la stima della posizione e viene impiegato anche un filtro di Kalman per combinare la stima prodotta da CSM con l'informazione odometrica.
Zhang e Ghosh in [65] propongono un metodo incrementale attraverso cui procedere alla localizzazione del robot e alla successiva fase di costruzione della mappa globale: ad ogni rilevazione sensoriale, i nuovi dati, opportunamente filtrati e rielaborati, vengono confrontati con la mappa globale costruita fino a quel punto, individuando la correzione da apportare alle informazioni rilevate dal sistema odometrico. Una volta determinata la posizione del robot viene costruita la nuova mappa globale fondendo insieme le informazioni della mappa globale precedente e le nuove informazioni raccolte.
L'algoritmo per lo scan matching proposto dai due autori si
basa sulla corrispondenza tra i segmenti delle due mappe. I segmenti
della mappa locale
appena acquisita vengono trasformati
nel sistema di coordinate della mappa globale
,
basandosi sulla trasformazione
ottenuta attraverso il sistema odometrico.
Quindi la corrispondenza tra i segmenti di
e
viene
effettuata in base a due criteri: le direzioni di due segmenti corrispondenti,
e
, devono essere simili e i due centri
di gravità devono essere vicini. Considerando un insieme di
corrispondenze
trovate, la correzione per l'angolo di rotazione viene
calcolata come:
![]() |
(2.5) |
Il calcolo del vettore di traslazione
viene effettuato
per ogni singola corrispondenza in modo che la seguente equazione risulti verificata:
![]() |
(2.6) |
dove
sono i coefficienti della retta utilizzando
l'usuale descrizione
e
è la matrice di rotazione. Le varianze dei centri di gravità
vengono utilizzate come pesi. Il vettore di traslazione
viene quindi calcolato con il metodo dei minimi quadrati
per tutte le corrispondenze tra segmenti trovate.
Una volta localizzato il robot, i segmenti della mappa locale vengono aggiunti alla mappa globale o fusi con quelli già presenti. L'operazione
di fusione prevede la sostituzione dei segmenti che si sovrappongono o si intersecano con un nuovo segmento, ottenuto a partire dalle caratteristiche dei segmenti considerati. In particolare, la
direzione
e il nuovo centro di gravità vengono determinati come media pesata degli stessi parametri che descrivono i segmenti coinvolti nella fusione (e lo stesso accade per le rispettive varianze). Gli estremi del nuovo segmento, infine, vengono determinati proiettando tutti gli estremi dei segmenti sulla retta di supporto del nuovo segmento e scegliendo quelli a distanza maggiore.
Si osservi che il metodo esaminato non può prescindere dalla conoscenza dell'informazione odometrica come prima stima della posizione della nuova mappa acquisita.