Você está na página 1de 36

Universidade Federal do Maranhão

Centro de Ciências Exatas e Tecnológicas


Programa de Pós-Graduação em Ciência da Computação

ANDRÉ FELIPE DA SILVA OLIVEIRA

LOCALIZAÇÃO SIMULTÂNEA E MAPEAMENTO

São Luís
2016
ANDRÉ FELIPE DA SILVA OLIVEIRA

LOCALIZAÇÃO SIMULTÂNEA E MAPEAMENTO

Trabalho apresentado ao Programa de


Pós-Graduação em Ciência da Computa-
ção da Universidade Federal do Maranhão,
como requisitos necessários para obtenção
Obtenção de nota na disciplina Estudo
Dirigido.

Orientador: Profo Areolino Almeida Neto

São Luís
2016
Resumo
Este trabalho consiste em uma revisão bibliográfica a cerca de localização simultânea
e mapeamento aplicada a robôs móveis. Neste trabalho é abordado sobre os tipos
de filtros, tipos de modelos de movimento, tipos de medição e a aplicação deles no
contexto de localização simultânea e mapeamento. Todo o trabalho é fundamento
em uma abordagem probabilística.

Palavras-chaves: localização. mapeamento. filtro. modelo de movimento. medição.


Abstract
This work consists of a literature review about simultaneous localization and
mapping applied to mobile robots. This work is discussed on the types of filters,
types of motion models, measurement types and their application in the context
of simultaneous localization and mapping. All work is ground in a probabilistic
approach.

Key-words: location. mapping. filter. motion model. measurement.


Lista de ilustrações

Figura 1 – Pose do robô demonstrado como um sistema de coordenadas


global. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Figura 2 – Algoritmo EKF SLAM com correspondências conhecidas. . . . . 32
Figura 3 – Algoritmo EKF SLAM com correspondências desconhecidas. . . 33
Sumário

Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1 FILTROS PROBABILÍSTICOS . . . . . . . . . . . . . . . . . 7
1.1 Filtro de Bayes . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2 Parametrizados . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.1 Filtro de Kalman . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2.2 Filtro de Kalman estendido . . . . . . . . . . . . . . . . . . . . . . 15
1.3 Não-parametrizados . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.1 Filtro histograma . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.3.1.1 Filtro discreto de Bayes . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.3.1.2 Estados contínuos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3.2 Filtro de partículas . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2 MODELOS PROBABILÍSTICOS DE MOVIMENTO . . . . . 22


2.1 Modelo de Velocidade . . . . . . . . . . . . . . . . . . . . . . . 23
2.2 Modelo Odométrico . . . . . . . . . . . . . . . . . . . . . . . . 23

3 MODELOS PROBABILÍSTICOS DE MEDIÇÃO . . . . . . . 26

4 FILTROS SLAM NA ABORDAGEM PROBABILÍSTICA . . 29


4.1 SLAM com filtro de Kalman extendido com correspondências
conhecidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.2 SLAM com filtro de Kalman extendido com correspondências
desconhecidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . 34
6

Introdução

Sempre que se fala em robôs autônomos, pensa-se que ele deve ser capaz
de reconhecer e atuar no ambiente ao seu redor, mesmo que esse ambiente seja
inicialmente desconhecido. Quando se fala em robôs moveis, atuação do robô se da
na forma de locomoção no ambiente e com isso a sua autonomia passa por reconhecer
ou mapear o ambiente em que esta inserido. SLAM (Simultaneous Localization
and Mapping) é uma área cujo objetivo é mapear ambientes desconhecidos, de
forma a fornecer ao robô móvel informação suficiente para que este possa exercer
sua autonomia (um mapa e a localização do robô neste mapa de forma precisa e
confiável).
SLAM envolve varias áreas de pesquisas, sendo algumas delas controle,
tratamento de dados , processamento de imagens e mapeamento. As aplicações
são as mais variadas possíveis, sendo uma das mais utilizadas em motivações de
trabalho, a utilização de robôs que se usam de SLAM para salvamento em ambientes
desconhecidos.
Os primeiros trabalhos relevantes publicados sobre SLAM foram realizados
pelos pesquisadores R.C. Smith e P. Cheeseman em (SMITH; CHEESEMAN, 1986)
e (SMITH; SELF; CHEESEMAN, 1990). Outro trabalho pioneiro foi o de Hugh
F. Durrant-Whyte em (LEONARD; DURRANT-WHYTE, 1991) através de uma
abordagem algorítmica computacionalmente tratável.
Neste trabalho esta dividido da seguinte forma, onde no Capítulo 1 explana-
se sobre filtros bastante utilizados no estudo e implementação de SLAM, no Capítulo
2 fala-se sobre os modelos de movimentos probabilísticos predominantes em SLAM,
no Capítulo 3 se aborda as técnicas de medição probabilísticas e no Capítulo 4 é
explanado sobre filtros SLAM em uma abordagem probabilística.
7

1 Filtros Probabilísticos

A aquisição de informações em ambiente desconhecido é deveras complicado,


visto que a forma de aquisição é através de sensores. Quando um sensor adquire
dados de um ambiente, esses dados normalmente vem corrompidos com ruídos,
portanto faz-se necessário se utilizar de técnicas para amenizar esses ruídos.
Por serem aleatórios e instáveis, os ruídos tornam-se difíceis de predizer o
quanto eles interferem na precisão de aquisição da informação, por este motivo, a
melhor forma de trata-los é através de modelos probabilísticos, onde estima-se como
deve ser a informação real baseando-se no dados adquiridos através dos sensores.
Para entender como os filtros devem funcionar é preciso primeiro entender
os conceitos de estado do robô x que pode ser definido em cima de um tempo t,
dessa forma temos xt . O estado na abordagem SLAM é considerado a posição do
robô no ambiente e para isso, normalmente é definido que o robô tem um ponto de
partida, o estado inicial x0 e defini-se que o conjunto de estados desde o estado
inicial do robô até o estado atual como x0:t . As medições z feitas pelo robô também
são atreladas ao tempo, nesse caso tem-se a primeira medição feita pelo robô até
a ultima medição executada por ele z1:t−1 , que resultou na possibilidade de se
chegar ao estado atual e o conjunto de ações executadas pelo robô no ambiente (na
abordagem SLAM é o movimento) que gerou a posição atual, é dada por u1:t .
Para se obter o estado do robô xt é preciso ter o conhecimento de seu estado
inicial x0 , do conjunto de medições z1:t−1 e conjunto de ações de movimentos u1:t
. Neste caso pode-se dizer que a o conjunto de estados ao longo do tempo, suas
medidas e ações de movimentos determinam o estado atual (FALLIS, 2013):

p(xt |x0:t−1 , z1:t−1 , u1:t ). (1.1)

Considerando-se que a medição não influi diretamente na determinação


do estado do robô, que apenas as ações de movimento realmente determinam e
o ultimo estado do robô determinam o estado atual, pode-se dizer que (FALLIS,
Capítulo 1. Filtros Probabilísticos 8

2013):
p(xt |xt−1 , ut ), (1.2)

dessa forma, tem-se então que o estado atual do robô depende do estado anterior e
a ação de movimento que ocorreu sobre a ação anterior, gerando assim o estado
atual.
Sabendo que a medição é diretamente vinculada ao estado do robô, ou seja,
sua localização, pode-se dizer que (FALLIS, 2013):

p(zt |xt ), (1.3)

ou seja, a medição depende apenas da posição atual do robô, independe das posições
anteriores e movimentos por ele executado.
Para entender as sessões a seguir, é preciso introduzir um conceito de robótica
probabilística chamada de crença (belief ). Crença é o conhecimento interno do robô
sobre o estado do ambiente (seu posicionamento). Um estado não pode ser medido
diretamente e o robô deve inferir seu posicionamento através dos dados fornecidos
pelas medições. É preciso saber distinguir um estado verdadeiro de uma crença
interna do robô.
A robótica probabilística representa a crenças como uma distribuição proba-
bilística condicional (Distribuição de crenças). A crença atribui uma probabilidade
para cada hipotese possível de ser o estado real. Pode-se chamar a crença sobre a
variável estado xt de bel(xt ) e dessa forma pode-se dizer que (FALLIS, 2013):

bel(xt ) = p(xt |z1:t , u1:t ). (1.4)

Essa é a distribuição de probabilidade sobre o estado xt no tempo t, considerando


todas as medidas feitas z1:t e todos os controles executados u1:t . Já a distribuição
anterior a medição no tempo t, caso se deseje calcular antes de se incorporar a
ultima medição e após executar o ultimo controle ut pode-se dizer que (FALLIS,
2013):
bel(xt ) = p(xt |z1:t−1 , u1:t ). (1.5)

Essa distribuição, por sua vez, tenta-se prever o estado no tempo t.


Capítulo 1. Filtros Probabilísticos 9

1.1 Filtro de Bayes


Este filtro é utilizado para calcular as crenças a partir dos dados de controle
e medição. O algoritmo para do filtro de Bayes, é um algoritmo recursivo, onde o
próximo estado depende diretamente do estado anterior.
Segundo (FALLIS, 2013), bel(xt ) pode ser calculado por:
Z
bel(xt ) = p(xt |ut , xt−1 ) bel(xt−1 )dx, (1.6)

enquanto o valor de bel(xt ) pode ser calculado por:

bel(xt ) = η p(zt |xt ) bel(xt ). (1.7)

Tendo conhecimento dessas formulas, pode-se prever a crença do próximo estado


através do algoritmo (FALLIS, 2013):

Algorithm 1 Algoritmo Filtro de Bayes (FALLIS, 2013)


1: procedure BayesFilter(bel(xt−1 ), ut , zt )
2: for all xt do R
3: bel(xt ) = p(xt |ut , xt−1 ) bel(xt−1 )dx
4: bel(xt ) = η p(zt |xt ) bel(xt )
5: end for
6: Return bel(xt )
7: end procedure

Para entender melhor o funcionamento do filtro, será utilizado um exemplo


simples de (FALLIS, 2013), onde tem-se uma situação em que um robô tenta
estimar o estado de uma porta (será assumido que a porta pode estar apenas aberta
ou fechada e que apenas o robô poderá alterar o estado da porta). Inicialmente o
robô não sabe o estado da porta e assume-se que a probabilidade da porta estar
em qualquer dos dois estados seja a mesma:

bel(X0 = aberto) = 0.5 (1.8)

bel(X0 = f echado) = 0.5 (1.9)


Capítulo 1. Filtros Probabilísticos 10

Também assume-se que o sensor do robô contem ruído e que o ruído do sensor
segue as seguintes condições de probabilidade:

p(Zt = detectouAberto | Xt = estaAberto) = 0.6


p(Zt = detectouF echado | Xt = estaAberto) = 0.4 (1.10)

p(Zt = detectouAberto | Xt = estaF echado) = 0.2


p(Zt = detectouF echado | Xt = estaF echado) = 0.8 (1.11)

Dessa forma a chance de falso negativo é caso a porta esteja aberta e o sensor
detecte ela fechada com a probabilidade ocorrer de 0.4. No caso de falso positivo a
porta esta fechada e o sensor detecta ela aberta com a probabilidade de 0.2.
Analisando as probabilidades das Fórmulas 1.10 e 1.11 e se considerar que
a única ação que o robô pode exercer sobre a porta é empurra-la, pode-se então
inferir que:

p(Xt = estaAberto | Ut = empurrar, Xt−1 = estaAberto) = 1


p(Xt = estaF echado | Ut = empurrar, Xt−1 = estaAberto) = 0 (1.12)

p(Xt = estaAberto | Ut = empurrar, Xt−1 = estaF echado) = 0.8


p(Xt = estaF echado | Ut = empurrar, Xt−1 = estaF echado) = 0.2 (1.13)

As probabilidades da Fórmula 1.12 são triviais na medida em que se considerar


que a porta esteja aberta e o robô empurra-la, a chance dela continuar aberta
é de 1 e a chance dela fechar é de 0. Já no caso das probabilidades em 1.13, as
probabilidades são de acordo com 1.11, em que a chance de caso a porta esteja
fechada, o robô empurra-la e ela abrir é igual a chance de a medição do sensor esta
correta quanto a porta estar fechada, enquanto que no caso de ele empurrar a porta
e ela permanecer fechada, é apenas no caso em que o sensor detecta erroneamente
que a porta esta fechada.
Considerando também que o robô pode não executar nenhuma ação na
porta, pode-se inferir:

p(Xt = estaAberto | Ut = f azerN ada, Xt−1 = estaAberto) = 1


p(Xt = estaF echado | Ut = f azerN ada, Xt−1 = estaAberto) = 0 (1.14)
Capítulo 1. Filtros Probabilísticos 11

p(Xt = estaAberto | Ut = f azerN ada, Xt−1 = estaF echado) = 0


p(Xt = estaF echado | Ut = f azerN ada, Xt−1 = estaF echado) = 1 (1.15)

Em posse dos dados do problema, pode-se então desenvolver o Algoritmo 1:

Z
bel(x1 ) = p(x1 |u1 , x0 ) bel(x0 )dx
X
bel(x1 ) = p(x1 |u1 , x0 ) bel(x0 )
x0

bel(x1 ) = p(X1 | U1 = f azerN ada, X0 = estaAberto) bel(X0 = estaAberto)


+p(X1 | U1 = f azerN ada, X0 = estaF echado) bel(X0 = estaF echado)
(1.16)

Substituindo os valores para a hipotese X1 = estaAberto, tem-se que:

bel(x1 = estaAberto)
= p(X1 = estaAberto | U1 = f azerN ada, X0 = estaAberto) bel(X0 = estaAberto)
+p(X1 = estaAberto | U1 = f azerN ada, X0 = estaF echado) bel(X0 = estaF echado)
bel(x1 = estaAberto) = 1 · 0.5 + 0 · 0.5 = 0.5
(1.17)

e para X1 = estaF echado:

bel(x1 = estaF echado)


= p(X1 = estaF echado | U1 = f azerN ada, X0 = estaAberto) bel(X0 = estaAberto)
+p(X1 = estaF echado | U1 = f azerN ada, X0 = estaF echado) bel(X0 = estaF echado)
bel(x1 = estaF echado) = 0 · 0.5 + 1 · 0.5 = 0.5
(1.18)

Incorporar as medições altera a crença, dessa forma:

bel(x1 ) = η p(z1 = detectouAberto|x1 ) bel(x1 ) (1.19)


Capítulo 1. Filtros Probabilísticos 12

Considerando os possíveis estados de X1 serem estaAberto ou estaF echado, calcula-


se:

bel(x1 = estaAberto) = η p(z1 = detectouAberto|x1 ) bel(x1 )


bel(x1 = estaAberto) = η 0.6 · 0.5 = η 0.3 (1.20)

bel(x1 = estaF echado) = η p(z1 = detectouAberto|x1 ) bel(x1 )


bel(x1 = estaF echado) = η 0.2 · 0.5 = η 0.1 (1.21)

sabendo disso, é só calcular o valor de η:

bel(x1 = estaF echado) + bel(x1 = estaAberto) = 1


η 0.3 + η 0.1 = 1
η = 2.5 (1.22)

com isso tem-se que:

bel(x1 = estaAberto) = 0.75


bel(x1 = estaF echado) = 0.25 (1.23)

Quando se calcula o valor de X1 fica facil calcular os próximos valores


através do Algoritmo 1

bel(x2 = estaAberto) = 1 · 0.75 + 0.8 · 0.25 = 0.95


bel(x2 = estaF echado) = 0 · 0.75 + 0.2 · 0.25 = 0.05, (1.24)

e então:

bel(x2 = estaAberto) = η 0.6 · 0.95 ≈ 0.983


bel(x2 = estaF echado) = η 0.2 · 0.05 ≈ 0.017. (1.25)

Através desse exemplo e até este ponto, pode-se dizer que existe uma chance
de aproximadamente 0.983 da porta estar aberta caso as medições estejam corretas.
Capítulo 1. Filtros Probabilísticos 13

Ainda de acordo com (FALLIS, 2013), ele compara isso a uma chance de um avião
em voou com piloto automatico, ter uma chance de 0.983 de não cair.
Através desse exemplo, pode-se perceber a importância da aplicação de
filtros para prever a possibilidade de situações possíveis, no caso do SLAM, os
filtros são utilizados para confirmar medições (ex.: qual a possibilidade de realmente
existir uma parede em um determinado local) e analisar o quão confiáveis essas
medições podem ser.
Na tentativa de melhorar ainda mais a precisão dos filtros, pois este é um
dos pilares fundamentais na utilização dos mesmos, atrela-se o filtro de Bayes a
conceitos de probabilidade. Nos tópicos a seguir, se aborda sobre alguns filtros
derivados do filtro de Bayes e fundamentados em probabilidade.

1.2 Parametrizados
Os filtros parametrizados tem por característica serem um estimador de es-
tados recursivo, também chamados de filtros gaussianos. Esses filtros são conhecidos
por serem implementações tratáveis do filtro de Bayes.
Os filtros gaussianos tem uma característica básica em que as crenças são
representadas por distribuições normais multivariadas, que é dada pela Equação
(FALLIS, 2013):
1
 
− 12
p(x) = det(2πΣ) exp − (x − µ)T Σ−1 (x − µ) , (1.26)
2
onde x é o estado, µ é a média e σ é a covariância.
Filtros gaussianos são unimodais, ou seja, eles possuem apenas um único
máximo. Inferir um estado posterior é uma característica de muitos problemas de
rastreamento em robótica, em que o estado posterior inferido se encontra próximo
ao estado verdadeiro e com apenas uma pequena margem de incerteza.
Em (FALLIS, 2013) é dito que a representação de uma gaussiana por
média e covariância é chamada de representação de momentos, isto porque a
média e a covariância são os primeiros e segundo momento de uma distribuição de
probabilidade. Todos os outros momentos são zero para distribuição normal.
Capítulo 1. Filtros Probabilísticos 14

1.2.1 Filtro de Kalman


Segundo (FALLIS, 2013), o filtro de Kalman representa as crenças por
representação de momentos. A média representada por µt e a covariância por
σt , onde t é o tempo. Os estados posteriores são gaussianos se as seguintes três
propriedades se mantém:
- probabilidade do próximo estado;
- probabilidade de medição;
- crença inicial.
A probabilidade do próximo estado p(xt |ut , xt−1 ) deve ser uma função linear
com um adicional de ruído gaussiano, que pode ser expressa por:

xt = At xt−1 + Bt ut + εt (1.27)

nesta abordagem, xt e xt−1 são vetores de estados e ut é um vetor de controle no


tempo t. At e Bt são matrizes, em que At é uma matriz n × n, onde n é a dimensão
do vetor de estado xt e Bt é uma matriz n × m, sendo m o número de dimensões
do vetor de controle ut .
A variável aleatória εt é um vetor aleatório e gaussiano que modela a
aleatoriedade no estado de transição e possui a mesma dimensão do vetor de estado.
Sua média é zero e a covariância é chamada de Rt .
Conectando a Equação 1.27 com 1.26 e considerando que a média do estado
posterior é dada por At xt−1 + Bt ut e que a covariância é Rt , tem-se que:
1
 
− 12
p(xt |ut , xt−1 ) = det(2πRt ) exp − (xt − At xt−1 − Bt ut )T Rt−1 (xt − At xt−1 − Bt ut ) .
2
(1.28)
Para a probabilidade de medição p(zt | xt ), que precisa ser linear e com a
adição do ruído gaussiano, tem-se:

zt = Ct xt + δt . (1.29)

Onde Ct é a matriz k × n, em que k é a dimensão do vetor de medição zt e o vetor


δt representa o ruído da medição. A distribuição de δt é uma gaussiana multivariada
Capítulo 1. Filtros Probabilísticos 15

com média zero e covariância Qt . Dessa forma, considerando a Equação 1.26 em


conjunto com 1.29, tem-se que a distribuição da probabilidade de medição é dada
por:
1
 
1
p(zt | xt ) = det(2πQt )− 2 exp − (zt − ct xt )T Q−1
t (zt − Ct xt ) . (1.30)
2

No caso da crença inicial bel(x0 ), deve ser normalmente distribuída, consi-


derando a sua média como µ0 e a covariância como Σ0 . Levando em consideração a
equação 1.26, tem-se que:
1
 
1
bel(x0 ) = p(x0 ) = det(2πΣ0 )− 2 exp − (x0 − µ0 )T Σ−1
0 (x0 − µ0 ) . (1.31)
2

Segundo (FALLIS, 2013) Considerando essas três propriedades, pode-se


calcular o posterior bel(xt ) como uma gaussiana, a partir de qualquer ponto no
tempo t.

Algorithm 2 Algoritmo Filtro de Kalman (FALLIS, 2013)


1: procedure KalmanFilter(ut−1 , Σt−1 , ut , zt )
2: µ̄t = At µt−1 + Bt ut
3: Σ̄t = At Σt−1 ATt + Rt
 −1
4: Kt = Σ̄t CtT Ct Σ̄t CtT + Qt
5: µt = µ̄t + Kt (zt − Ct µ̄t )
6: Σt = (I − Kt Ct ) Σ̄t
7: Return µt ,Σt
8: end procedure

O Algoritmo 2 (FALLIS, 2013) representa o algoritmo do filtro de Kalman,


em que a variável Kt é o ganho de Kalman e bel(xt ) é representado por µ̄ e Σ̄ antes
da incorporação da medição zt .

1.2.2 Filtro de Kalman estendido


Segundo (FALLIS, 2013), o estado de transição linear e medição linear
adicionados de ruido gaussiano são raramente utilizáveis na prática, pois em casos
em que robôs se movimentam em constante velocidade rotacional e translacional,
Capítulo 1. Filtros Probabilísticos 16

o robô acaba se movendo em trajetórias circulares, que não podem ser descritas
através de uma transição de próximo estado linear.
O filtro de Kalman estendido tenta resolver este problema tratando a
probabilidade do próximo estado e a probabilidade de medição através de funções
não lineares, sendo estas g e h, respectivamente. Através dessa idéia, pode-se dizer
que:

xt = g(ut , xt−1 ) + εt (1.32)


zt = h(xt ) + δt (1.33)

Este modelo é baseado nas Equações 1.27 e 1.29 e uma generalização delas.
Porém, sendo g e h funções arbitrarias, a crença deixa de ser uma gaussiana e a
atualização da crença também deixa de ser exata para as funções não lineares g e
h.
Segundo (FALLIS, 2013), o filtro de Kalman estendido (EKF) calcula uma
aproximação da verdadeira crença e representa essa aproximação por uma gaussiana.
Dessa forma, a crença bel(xt ) no tempo t é representada pela média µt e a covariância
Σt . Por este motivo, o EKF herda do filtro de Kalman a representação da crença,
mudando apenas que no EKF, a crença passa a ser apenas uma aproximação,
enquanto o filtro de Kalman é exato.
O EKF tem uma ideia que que o viabiliza chamada de linearização (FALLIS,
2013). A gaussiana projetada através da função não-linear de próximo estado g é
não gaussiana. O motivo disso é porque a não-linearidade em g distorce a crença
de forma que destrói a a sua forma gaussiana.A linearização aproxima g através
de uma função linear, que é tangente a g na média da gaussiana. Ainda segundo
(FALLIS, 2013), a linearização de g aproxima a propagação da crença de forma
que torna ela equivalente ao do filtro de Kalman. O mesma técnica se aplica a h.
A técnica de linearização utilizada pelo EKF é a expansão de Taylor, essa
técnica constrói uma aproximação linear para g a partir de seus valores e inclinação.
A inclinação é calculada pela derivada parcial:

∂g(ut , xt−1 )
g 0 (ut , xt−1 ) := (1.34)
∂xt−1
Capítulo 1. Filtros Probabilísticos 17

Para gaussiana o estado mais provável é a média do posterior µt−1 , isso quer
dizer que g é aproximado pelo valor de µt−1 (e ut também), dito isto, a extrapolação
linear é determinado por um termo proporcional ao gradiente de g com µt−1 e ut :

g(ut , xt−1 ) ≈ g(ut , µt−1 ) + g 0 (ut , µt−1 )(xt−1 − µt−1 )


| {z }
=: Gt
= g(ut , µt−1 ) + Gt (xt−1 − µt−1 ) (1.35)

Escrevendo como uma gaussiana, a probabilidade do próximo estado é


aproximada por:
1 1
p(xt |ut , xt−1 ) ≈ det(2πRt )− 2 exp{− [xt − g(ut , µt−1 ) − Gt (xt−1 − µt−1 )]T
2
−1
Rt [xt − g(ut , µt−1 ) − Gt (xt−1 − µt−1 )]} (1.36)

A matriz Gt tem tamanho n × n, sendo n a dimensão do estado, essa matriz


é chamada de Jacobian. O valor de Jacobian depende de ut e µt−1 .

Algorithm 3 Algoritmo Filtro de Kalman Estendido (FALLIS, 2013)


1: procedure ExtendedKalmanFilter(ut−1 , Σt−1 , ut , zt )
2: µ̄t = g(ut , µt−1 )
3: Σ̄t = Gt Σt−1 GTt + Rt
 −1
4: Kt = Σ̄t HtT Ht Σ̄t HtT + Qt
5: µt = µ̄t + Kt (zt − ht µ̄t )
6: Σt = (I − Kt Ht ) Σ̄t
7: Return µt ,Σt
8: end procedure

A mesma linearização aplicada em g em 1.35, agora é aplicada em h, porém


aqui a expansão de Taylor é desenvolvida ao redor de µ̄t :

h(xt ) ≈ h(µ̄t ) + h0 (µ̄t )(xt − µ̄t )


| {z }
=: Ht
= h(µ̄t ) + Ht (xt − µ̄t ) (1.37)
Capítulo 1. Filtros Probabilísticos 18

∂h(xt )
Sabendo que h0 (xt ) := ∂xt
, tem-se:

1 1
p(zt |xt ) ≈ det(2πQt )− 2 exp{− [zt − h(µ̄t ) − Ht (xt − µ̄t )]T
2
−1
Qt [zt − h(µ̄t ) − Ht (xt − µ̄t )]} (1.38)

O algoritmo do EKF é similar ao Algoritmo 2, porem as diferenças impor-


tantes podem ser observadas no Algoritmo 3.

1.3 Não-parametrizados
Segundo (FALLIS, 2013), alternativo aos filtros paramétricos (gaussianos),
tem-se os filtros não-paramétricos. Os filtros paramétricos não ficam presos de
forma funcional a uma forma de estado posterior única, como acontece com os
filtros gaussianos.
Os filtros não-paramétricos se utilizam de uma aproximação do estado poste-
rior, através de número finito de valores, cada um correspondendo aproximadamente
a uma região do espaço de estado. O número de parâmetros utilizados para estimar
uma aproximação do próximo estado pode variar e a qualidade da aproximação
depende diretamente desse número de parâmetros utilizados. Quando o número
de parâmetros tende ao infito, a aproximação tende ao próximo estado de forma
exata, porém, quanto maior o número de parâmetros, maior o custo computacional,
felizmente que serão apresentados tem a possibilidade de adaptar se o número
de parâmetros para a complexidade do estado posterior. Dessa forma, quando o
estado posterior tem uma pequena complexidade, utiliza-se um pequeno número de
parâmetros e quando tem uma alta complexidade, o número de parâmetros cresce.
A técnicas que serão apresentadas aqui, histograma e filtro de partículas,
não tem fortes hipóteses paramétricas sobre o estado posterior, porém elas são
adequadas para representar crenças complexas e multimodais. São uma boa escolha
quando tem que se lidar com fases de incertezas globais e quando encontra problemas
com difíceis associação de dados.
Segundo (FALLIS, 2013), técnicas em que se é possível adaptar o número
de parâmetros são chamadas de adaptativas e aquelas que são capazes de adaptar
Capítulo 1. Filtros Probabilísticos 19

o número de parâmetros baseando-se no recurso computacional disponível para


computação da crença são chamadas de recurso-adaptativa. As técnicas recurso-
adaptativas são extremamente importantes para a robótica, poise isso possibilita a
que o robô tome decisões em tempo real.

1.3.1 Filtro histograma


Histograma decompõe o espaço de estados em um grande número de regiões
finitas e representa o estado posterior cumulativo para cada região por um simples
valor probabilístico (FALLIS, 2013). Para estados discretos, o filtro é chamado de
filtro de Bayes discreto e em espaços de estados contínuos é conhecido como filtro
histograma.

1.3.1.1 Filtro discreto de Bayes

Este filtro é aplicado a problemas com um finito espaço de estados, quando


Xt pode ter vários valores finitos.

Algorithm 4 Algoritmo Filtro de Bayes discreto (FALLIS, 2013)


1: procedure DiscreteBayesFilter({pk,t−1 }, ut , zt )
2: for all k do
p̄k,t = i p(Xt = xk |ut , Xt−1 = xi ) pi,t−1
P
3:
4: pk,t = η p(zt |Xt = xk ) p̄k,t
5: end for
6: Return pk,t
7: end procedure

No Algoritmo 4 tem-se o pseudo-código para o algoritmo de Bayes discreto,


ele é derivado do filtro de Bayes (Algoritmo 1). As variáveis xi e xk representam
estados individuais. A crença no tempo t é uma distribuição de probabilidade para
cada estado xk , denotado por pk,t . A entrada do algoritmo é uma distribuição de
probabilidade discreta {pk,t } ao longo do recente controle ut e medição zt . O p̄k,t
representa a previsão da crença para o novo estado, se baseando apenas no controle,
enquanto pk,t é a previsão após incorporar a medição. Segundo (FALLIS, 2013), o
filtro de Bayes discreto é muito popular nas áreas de tratamento de sinal muitas
vezes referido como um passo a frente de uma Cadeia de Markov Escondida.
Capítulo 1. Filtros Probabilísticos 20

1.3.1.2 Estados contínuos

Este filtro, também chamado de filtro histograma decompõe o o espaço de


estados contínuo em muitas finitas regiões:

range(Xt ) = x1,t ∪ x2,t ∪ ... xK,t (1.39)

onde Xt é uma variável aleatória que descreve o estado do robô no tempo t e a


função range(Xt ) denota esse espaço. Enquanto xk,t descreve regiões convexas. Não
existe interseções entre as regiões xk,t e a união delas resulta na função range(Xt ).
A decomposição de um espaço de estados contínuo é uma grande multi-dimensional,
visto que cada xk,t representa uma célula da grade. Dependendo de do tamanho
dessas grades e da quantidade, pode-se trocar acurácia por eficiência computacional.
Neste filtro a probabilidade do próximo estado p(xt ) é definida por:
pk,t
p(xt ) = . (1.40)
|xk,t |

O |xk,t | representa o volume da região xk,t e pk,t a probabilidade para cada região
xk,t . O estado médio x̂k,t é calculado por:
Z
x̂k,t = |xk,t |−1 xt dxt (1.41)
xk,t

E através disso pode-se inferir que:

p(zt |xk,t ) ≈ p(zt |x̂k,t ) (1.42)


η
p(xk,t |ut , xi,t−1 ) ≈ p(x̂k,t |ut , x̂i,t−1 ) (1.43)
|xk,t |

Através dessas aproximações, que calcula-se o filtro histograma.

1.3.2 Filtro de partículas


Segundo (FALLIS, 2013), o filtro de partícula é um alternativa não-paramétrica
do filtro de Bayes. Assim como o filtro histograma, o filtro de partículas aproxima
o estado posterior através de um número finito de parâmetros, porém, ele difere
na forma como esses parâmetros são gerados e na forma como popula o espaço de
estados.
Capítulo 1. Filtros Probabilísticos 21

A ideia central por trás do filtro de partículas é a representação do estado


posterior bel(xt ) através de um conjunto de amostras de estados aleatórios extraído
do estado posterior.
No filtro de partículas, as amostras de uma distribuição posterior é chamada
de partícula e é denotada:
[1] [2] [M ]
χt = xt , xt , ..., xt (1.44)
[m]
A partir disso pode-se dizer que cada partícula xt (1 ≤ m ≤ M ) é uma instanciação
de estado no tempo t, uma hipotese do que o mundo verdadeiro pode ser no tempo
t.
Segundo (FALLIS, 2013), a ideia inicial do filtro é aproximar a crença bel(xt )
do conjunto de partículas χt . O ideal seria que a hipotese de estado xt fosse incluída
no conjunto de partículas χt e fosse proporcional ao estado posterior do filtro de
Bayes bel(xt ):
[m]
xt ∼ p(xt |z1:t , u1:t ) (1.45)

Algorithm 5 Algoritmo Filtro de partícula (FALLIS, 2013)


1: procedure ParticleFilter(χt−1 , ut , zt )
2: χ̄t = χt = ∅
3: for m = 1 to M do do
[m] [m]
4: sample xt ∼ p(xt |u ,x )
t t−1
[m]
[m],wt
5: χ̄t = χ̄t + xt
6: end for
7: for m = 1 to M do do
[i]
8: draw i with probability ∝ wt
[i]
9: add xt to χt
10: end for
11: Return χt
12: end procedure

Quanto mais uma região de espaço de estados estiver populada de amostras,


maior a chance do verdadeiro estado posterior estar nesta região. Assim como o
filtro de Bayes, o algoritmo do filtro de partículas constrói a crença bel(xt ) de forma
recursiva a partir de bel(xt−1 ). Da mesma forma, ele constrói χt recursivamente a
partir de χt conforme pode-se visualizar no Algoritmo 5.
22

2 Modelos Probabilísticos de Movimento

Neste capítulo é abordado sobre as ações do robô u1:t em forma de movimento.


Em SLAM, a movimentação do robô e sua precisão é de extrema importância.
Como visto no capítulo 1, os modelos de predição de estados, utilizam as ações do
robô como base de previsão.
Segundo (FALLIS, 2013), apesar de modelos de movimentos ser estudados
a décadas de forma determinística, para SLAM foi necessário generalizar esses
modelos. Neste capítulo os modelos abordados são baseados na probabilidade de
transição de estado p(xt |ut , xt−1 ).
Segundo (FALLIS, 2013), cinemática é o calculo que descreve o efeitos das
ações de controle de acordo com a configuração do robô. A cinemática do robô é
um dos principais temas abordados, pois todo o processo depende do quão preciso
as previsões são nesta etapa (o tratamento de incertezas e ruídos).
A cinemática abordada é baseado em um modelo bidimensional (planar) e
é descrita por coordenadas cartesianas hx, yi (o x da posição cartesiana é diferente
do xt que representa o estado atual do robô) e um ângulo de orientação θ. No vetor
da Equação 2.1, pode-se observar a representação do estado cinemático do robô,
também chamado de pose.  
x
 
y 
 
(2.1)
 
θ
Pode-se observar melhor como funciona a pose do robô através da Figura 1.
O modelo de cinemática probabilística (modelo de movimento) é baseado
no modelo de transição de estado do robô p(xt |ut , xt−1 ) onde xt e xt−1 representa
poses do robô e ut é o comando de movimento. Neste capítulo é abordado sobre
dois modelos de movimento, modelo de velocidade e modelo de odometria que são
apresentados nos tópicos a seguir.
Capítulo 2. Modelos Probabilísticos de Movimento 23

Figura 1: Pose do robô demonstrado como um sistema de coordenadas global.


Fonte: Acervo do autor (FALLIS, 2013)

2.1 Modelo de Velocidade


De acordo com (FALLIS, 2013), este modelo de movimento assume que os
controles ut sejam comandos de controle de velocidade dados pelo motor do robô.
Nesse caso, ut é composto por dois tipos de velocidades, velocidade de rotação ωt e
velocidade de translação υt , sendo denotado da seguinte forma:
 
υt
ut =   (2.2)
ωt

De acordo com o modelo cinemático do robô (Equação 2.1), pode-se dizer


que a pose inicial seja xt−1 = (x y θ)T , o controle seja ut = (υ ω)T e a próxima
pose seja xt = (x0 y 0 θ0 )T , assume-se que o controle tem uma duração fixa ∆t. Os
parâmetros específicos de erro de movimento do robô são α1 , α2 , ..., α6 .
O algoritmo primeiro calcula o controle do robô livre de erro, o significado
de cada variável aparece após derivar-los, esses parâmetros são são dados por υ̂ e
ω̂. No Algoritmo 6 pode-se observar um algoritmo para resolução do problema com
modelo de velocidade de movimento.

2.2 Modelo Odométrico


Alternativo ao modelo de velocidade de movimento, existe o o modelo
odométrico, que consiste em calcular o movimento do robô ao longo do tempo.
Capítulo 2. Modelos Probabilísticos de Movimento 24

Algorithm 6 Amostra do modelo de velocidade de movimento (FALLIS, 2013)


1: procedure velocityMotionModel(χt−1 , ut , zt )
2: υ̂ = υ + sample(α1 |υ| + α2 |ω|)
3: ω̂ = ω + sample(α3 |υ| + α4 |ω|)
4: γ̂ = sample(α5 |υ| + α6 |ω|)
5:
6: x0 = x − ω̂υ̂ sin θ + ω̂υ̂ sin(θ + ω̂δt)
7: y 0 = y + ω̂υ̂ sin θ − ω̂υ̂ sin(θ + ω̂δt)
8: θ0 = θ − ω̂∆t + γ̂∆t
9:
10: Return xt = (x0 , y 0 , θ0 )T
11: end procedure

A odometria é normalmente obtida através da da integração dos encoders das


rodas do robô. Segundo (FALLIS, 2013), pela experiencia, o modelo odométrico é
mais preciso que o modelo de velocidade, porém ambos sofrem com problemas de
derrapagem.
Segundo (FALLIS, 2013), odometria é uma medição e não um controle,
porém tratam odometria como um sinal de controle e dessa forma tratam a medição
odométrica como controle.
No modelo odométrico, utiliza-se a informação relativa da odometria interna
do robô, considerando o intervalo de tempo (t−1, t] e o robô avançando da pose xt−1
até a pose xt . A odometria retorna o avanço de x̄t−1 = (x̄ ȳ θ̄) para x̄t = (x̄0 ȳ 0 θ̄0 ),
a barra representa que é uma medição odométrica. A chave para o resolução do
problema esta em considera que a diferença entre x̄t−1 e x̄t é um bom estimador
para a diferença das verdadeiras poses xt−1 e xt , dessa forme, podendo dizer que:
 
x̄t−1 
ut =  (2.3)
x̄t

Por conta da odometria, ut é transformado em três passos, rotação δrot1 ,


translação δtrans e uma segunda rotação δrot2 . Para cada par de posições (s̄ s̄0 ),
existe um único vetor de parâmetros (δrot1 δtrans δrot2 )T e esses parâmetros são
considerados suficientes para reconstrução do movimento relativo entre as duas
posições.
Capítulo 2. Modelos Probabilísticos de Movimento 25

O algoritmo utilizado para resolver esse problema é o Algoritmo 7.

Algorithm 7 Amostra do modelo de odométrico de movimento (FALLIS, 2013)


1: procedure odometryMotionModel(χt−1 , ut , zt )
0
2: δrot1 = atan2(ȳ
q − ȳ, x̄0 − x̄) − θ̄
3: δtrans = (x̄ − x̄0 )2 + (ȳ − ȳ 0 )s
4: δrot2 = θ̄0 − θ̄ − δrot1
5:
6: δ̂rot1 = δrot1 − sample(α1 δrot1 + α2 δtrans )
7: δ̂trans = δtrans − sample(α3 δtrans + α4 (δrot1 + δrot2 ))
8: δ̂rot2 = δrot2 − sample(α1 δrot2 + α2 δtrans )
9:
10: x0 = x + δ̂trans cos(θ + δ̂rot1 )
11: y 0 = y + δ̂trans sin(θ + δ̂rot1 )
12: θ0 = θ + δ̂rot1 + δ̂rot2
13:
14: Return xt = (x0 , y 0 , θ0 )T
15: end procedure

Exemplos de trabalhos onde aplica-se o modelo odométrico são (EUDES et


al., 2010a) e (EUDES et al., 2010b).
26

3 Modelos Probabilísticos de Medição

Modelos de medição são uma etapa fundamental no processo de SLAM, tanto


quanto os modelos de movimento e assim como tal, sofre do mesmo problema de
ruídos e incertezas. Os modelos de medição tentam captar o mundo real e descreve-
lo da maneira mais precisa possível em um modelo computacional. Existem diversos
tipos de sensores, sendo os mais utilizados em SLAM os sensores de distância (ex.:
lasers e sonares) e câmeras.
De acordo com (FALLIS, 2013), os modelos de medição são formalizados
como uma distribuição de probabilidade condicional p(zt |xt , m) (para minimização
de ruídos e incertezas), onde xt é a pose do robô, zt é a medição do robô no tempo
t e m é o mapa do ambiente.
Ainda de acordo com (FALLIS, 2013), a robótica probabilística acomoda
imprecisões do modelo do sensor em aspectos estocásticos como a modelagem
do processo de medição como uma densidade de probabilidade condicional, onde
calcula-se p(zt |xt ) ao invés de uma função determinística zt = f (xt ), a incerteza
do sensor é acomodada por aspectos não determinísticos do modelo.
Uma medição costuma não adquirir apenas uma única medição de uma vez,
podendo extrair varias características diferentes do ambiente, como no caso da
câmara que pode extrair a cor, luminosidade e saturação. Dessa forma a medição é
denotada da seguinte forma:

zt = {zt1 , zt2 , ..., ztK }, (3.1)

será utilizado ztk para se referir a uma medição individualmente. Após definir a foram
como as medições são expressas, aproxima-se p(zt |xt , m) através do produtório das
medições individuais.
K
p(ztk |xt , m)
Y
p(zt |xt , m) = (3.2)
k=1

Um mapa de um ambiente é composto por um número de objetos presente


Capítulo 3. Modelos Probabilísticos de Medição 27

neste ambiente:
m = {m1 , m2 , ..., mN }, (3.3)

considerando que mn , com 1 ≤ n ≤ N . Como se trata de mapas planares, pode-se


considerar os elementos do mapa sendo representados por mx,y , sendo x e y a
coordenadas dos objetos.
Existem vários métodos para tratar os erros e ruídos de medição, no Algo-
ritmo 8 tem-se o algoritmo do modelo de feixe de distância por exemplo. Neste
algoritmo tem-se um tipo de medição onde o sensor possui um alcance que é
denotado por [0; zmax ] e zmax representa o alcance máximo do sensor.

Algorithm 8 modelo de feixe de distância (FALLIS, 2013)


1: procedure beamRangerFinderModel(zt , xt , m)
2: q = 1
3: for k = 1 to K do do
4: compute ztk∗ for the measurement ztk using ray casting
5: p = zhit ·phit (ztk |xt , m) + zshort ·pshort (ztk |xt , m) + zmax ·pmax (ztk |xt , m) +
zrand · prand (ztk |xt , m)
6: q = q·p
7: end for
8: end procedure

No Algoritmo 8 existe algumas expressões que devem ser definidas. A


expressão phit (ztk |xt , m)mé definida por:

ηN (z k ; z k∗ , σ 2 if 0 ≤ ztk ≤ zmax
t t hit )
phit (ztk |xt , m) = (3.4)
 0 otherwise

onde ztk∗ é a média, σhit o desvio padrão e N (ztk , ztk∗ , σhit


2
) é dado por:
(ztk −ztk∗ )2
1 − 21
σ2
N (ztk ; ztk∗ , σhit
2
) = q e hit (3.5)
2
2πσhit

e o normalizador η para phit (ztk |xt , m) é calculado por:


Z zmax −1
η = N (ztk ; ztk∗ , σhit
2
)dztk (3.6)
0
Capítulo 3. Modelos Probabilísticos de Medição 28

Agora a expressão pshort (ztk |xt , m) é definida por:



−λshort ztk
ηλ
short e if 0 ≤ ztk ≤ ztk∗
pshort (ztk |xt , m) = (3.7)
 0 otherwise

e normalizador η para pshort (ztk |xt , m) é dado por:


1
η = k∗ (3.8)
1 − e−λshort zt

A expressão pmax (ztk |xt , m) é definida por:



1 if z = zmax
pmax (ztk |xt , m) = (3.9)
 0 otherwise

Por ultimo a expressão prand (ztk |xt , m) é definida por:



 1 if 0 ≤ ztk ≤ zmax
prand (ztk |xt , m) = zmax
(3.10)
 0 otherwise

Dessa forma, tendo conhecimento de todas as expressões envolvidas no


Algoritmo 8 faz-se possível sua implementação. Exemplos de aplicações com o
modelo apresentado neste capítulo podem ser observado em (KRETZSCHMAR;
STACHNISS; GRISETTI, 2011) e (DIOSI; KLEEMAN, 2004).
29

4 Filtros SLAM na Abordagem Probabi-


lística

Segundo (FALLIS, 2013), o problema SLAM ocorre quando o robô não tem
acesso ao mapa do ambiente em que esta inserido e por sua vez, também não tem
acesso a sua pose. No SLAM, o robô mapeia o ambiente ao ser redor e ao mesmo
tempo se localiza neste ambiente.
Ainda segundo (FALLIS, 2013), da perspectiva probabilística, exitem duas
formas principais do problema SLAM, sendo a primeira delas a online SLAM, que
envolve estimar a pose posterior através das poses momentâneas ao longo do mapa.
Sendo representado pela seguinte forma:

p(xt , m|z1:t , u1:t ) (4.1)

muitos algoritmos tratam o online SLAM de maneira incremental, descartando


a medições anteriores e realizando o controle apenas após o medições e controle
terem sido processados. O posterior do online SLAM é dado por:

p(xt , m, ct |z1:t , u1:t ) (4.2)

A segunda opção é o full SLAM, o calculo da pose posterior é feita sobre o


caminho x1:t ao longo do mapa:

p(x1:t , m|z1:t , u1:t ) (4.3)

O posterior do full SLAM é dado por:

p(x1:t , m, c1:t |z1:t , u1:t ) (4.4)

Nos tópicos a seguir, é abordado sobre o online SLAM juntamente com o


filtro de Kalman extendido (EKF), sendo tratado da forma em que o SLAM tem
correspondências conhecidas e correspondências desconhecidas.
Capítulo 4. Filtros SLAM na Abordagem Probabilística 30

4.1 SLAM com filtro de Kalman extendido com correspon-


dências conhecidas
Segundo (FALLIS, 2013), o algoritmo SLAM para correspondências conhe-
cidas resolve a porção contínua apenas o problema SLAM. O EKF SLAM além de
estimar o xt , ele também estima a coordenada de todos os pontos de referência ao
longo do caminho e isso torna necessário incluir as coordenadas desses pontos no
vetor de estados.
Assim como em (FALLIS, 2013), o vetor de estados é tratado como a união
da pose do robô com o mapa, sendo assim chamado de vetor de estados combinados
e sendo denotado por yt , onde:
 
xt
yt =  
m
yt = (x y θ m1,x m1,y s1 m2,x m2,y s2 ... mN,x mN,y sN ) (4.5)
sendo que x, y e θ são as coordenadas da pose do robô no tempo t, mi,x , mi,y são as
coordenadas de cada ponto para i = 1, ..., N e si é a assinatura do ponto. O EKF
SLAM então calcula o estado posterior:

p(yt |z1:t , u1:t ) (4.6)


Pode-se observar o funcionamento do EKF SLAM através do algoritmo da Figura
2.

4.2 SLAM com filtro de Kalman extendido com correspon-


dências desconhecidas
De acordo com (FALLIS, 2013), o EKF SLAM com correspondências co-
nhecidas é generalizada para o EKF SLAM geral, que utilizada uma estimativa de
incremento de probabilidade máxima para determinar as correspondências. Agora
o algoritmo carece da variável de correspondência ct e no seu lugar, é incluído o
tamanho momentâneo do mapa, Nt−1 . O algoritmo EKF SLAM pode ser observador
na Figura 3.
Capítulo 4. Filtros SLAM na Abordagem Probabilística 31

Exemplos de trabalhos utilizando este o EKF SLAM podem ser observados


em (BAILEY et al., 2006) e em (PAZ; TARDÓS; NEIRA, 2008).
Capítulo 4. Filtros SLAM na Abordagem Probabilística 32

Figura 2: Algoritmo EKF SLAM com correspondências conhecidas.


Fonte: Acervo do autor (FALLIS, 2013)
Capítulo 4. Filtros SLAM na Abordagem Probabilística 33

Figura 3: Algoritmo EKF SLAM com correspondências desconhecidas.


Fonte: Acervo do autor (FALLIS, 2013)
34

Referências

BAILEY, T.; NIETO, J.; GUIVANT, J.; STEVENS, M.; NEBOT, E. Consistency
of the ekf-slam algorithm. In: 2006 IEEE/RSJ International Conference on
Intelligent Robots and Systems. [S.l.: s.n.], 2006. p. 3562–3568. ISSN 2153-0858.
Citado na página 31.

DIOSI, A.; KLEEMAN, L. Advanced sonar and laser range finder fusion for
simultaneous localization and mapping. In: Intelligent Robots and Systems, 2004.
(IROS 2004). Proceedings. 2004 IEEE/RSJ International Conference on. [S.l.:
s.n.], 2004. v. 2, p. 1854–1859 vol.2. Citado na página 28.

EUDES, A.; LHUILLIER, M.; NAUDET-COLLETTE, S.; DHOME, M. Fast


odometry integration in local bundle adjustment-based visual slam. In: Pattern
Recognition (ICPR), 2010 20th International Conference on. [S.l.: s.n.], 2010. p.
290–293. ISSN 1051-4651. Citado na página 25.

EUDES, A.; NAUDET-COLLETTE, S.; LHUILLIER, M.; DHOME, M. Weighted


Local Bundle Adjustment and Application to Odometry and Visual SLAM Fusion.
2010. Citado na página 25.

FALLIS, A. Probabilistic robotics. [S.l.: s.n.], 2013. v. 53. 1689–1699 p. ISSN


1098-6596. ISBN 9788578110796. Citado 22 vezes nas páginas 7, 8, 9, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32 e 33.

KRETZSCHMAR, H.; STACHNISS, C.; GRISETTI, G. Efficient information-


theoretic graph pruning for graph-based slam with laser range finders. In: 2011
IEEE/RSJ International Conference on Intelligent Robots and Systems. [S.l.: s.n.],
2011. p. 865–871. ISSN 2153-0858. Citado na página 28.

LEONARD, J. J.; DURRANT-WHYTE, H. F. Simultaneous map building and


localization for an autonomous mobile robot. In: Intelligent Robots and Systems
’91. ’Intelligence for Mechanical Systems, Proceedings IROS ’91. IEEE/RSJ
International Workshop on. [S.l.: s.n.], 1991. p. 1442–1447 vol.3. Citado na página
6.

PAZ, L. M.; TARDÓS, J. D.; NEIRA, J. Divide and conquer: Ekf slam in
o(n). IEEE Transactions on Robotics, v. 24, n. 5, p. 1107–1120, Oct 2008. ISSN
1552-3098. Citado na página 31.
Referências 35

SMITH, R.; SELF, M.; CHEESEMAN, P. Estimating uncertain spatial


relationships in robotics. In: . Autonomous Robot Vehicles. New York, NY:
Springer New York, 1990. p. 167–193. ISBN 978-1-4613-8997-2. Disponível em:
<http://dx.doi.org/10.1007/978-1-4613-8997-2_14>. Citado na página 6.

SMITH, R. C.; CHEESEMAN, P. On the representation and estimation of spatial


uncertainty. The International Journal of Robotics Research, v. 5, n. 4, p. 56–68,
1986. Disponível em: <http://ijr.sagepub.com/content/5/4/56.abstract>. Citado
na página 6.

Você também pode gostar