Escolar Documentos
Profissional Documentos
Cultura Documentos
Este artigo descreve a implementação de um algoritmo de localização num robot num ambiente interior. O algoritmo utilizado foi a
localização Monte Carlo, utilizando um robot com odometria, o Pioneer P3-DX, equipado com sensor de alcance laser. A predição foi
feita com recurso à odometria e a actualização com o laser e um mapa do espaço. Foram feitas experiências num piso da Torre Norte
do Instituto Superior Técnico, com bons resultados.
A. Modelo do Movimento
Com o modelo de movimento, pretende-se obter o modelo
probabilístico da transição p(xt | ut, xt-1), ou seja, como um
comando de controlo ao robot afecta a sua pose. Existem duas Figura 2: Distribuição espacial das partículas de acordo com
abordagens possíveis: modelo de velocidade e modelo de diferentes modelos de movimento
odometria. Em ambos os casos, é necessário compreender B. Atribuição de Pesos
como o robot se movimenta e que erros estão associados de
Em cada iteração, algumas partículas, que são consideradas
forma a poder modelar probabilisticamente. No primeiro
menos exactas são descartadas enquanto outras, mais
comanda-se aos motores do robot especificando a velocidade e
importantes, são replicadas.
estima-se o efeito que teve na sua pose. No segundo o robot
Para isso, é necessário ter uma função que atribua a cada
consegue medir o seu movimento, disponibilizando odometria.
partícula um peso, que será depois determinante para a sua
A diferença fundamental é que no modelo de odometria a
eliminação ou manutenção no passo da reamostragem.
informação é obtida em retrospectiva, depois do movimento.
Os pesos são uma forma de avaliar se a posição da partícula é
Isto não representa um problema para o algoritmo usado, e é
confirmada pelos dados do sensor.
preferível tratar odometria como controlo para evitar aumentar
o espaço de estado.
Com o sensor obtém-se as distâncias segundo vários ângulos
Para a aplicação em concreto, assume-se que o robot dispõe de
aos obstáculos. Para comparar estes dados com a posição de
odometria e utiliza-se, portanto, o modelo de odometria. Este
uma partícula, obtém-se para essa posição as distâncias
modelo é considerado mais exacto e é o mais usado.
segundo os mesmos ângulos. A localização vai indexar a
Os robots disponibilizando informação relativa à odometria,
tabela com as distâncias que foi gerada a partir do mapa do
possuem encoders nas rodas que codificam informação
espaço, e adquire-se assim as distâncias para fazer a
relativa à rotação destas, que é integrada. Estes dados são no
comparação e consequente atribuição de peso.
entanto afectados por erros, por exemplo, resultantes de
No entanto, os dados do sensor são afectados por erro, pelo
derrapagens das rodas ou erros de medição internos dos
que não se pode atribuir o peso simplesmente por uma
encoders. Assim, à medida que o robot se vai movimentando,
comparação directa entre os dois valores. É importante
maior erro vai acumulando na odometria.
construir um modelo do sensor de forma a evitar dar pesos
Os valores usados obtêm-se subtraindo o valor da odometria
muito pequenos e aumentar as hipóteses de rejeitar uma
da iteração anterior ao valor actual, representando o
partícula devido aos erros do sensor.
movimento entre as duas iterações. Este valor é decomposto
em três passos, ilustrados na fig. 1.
C. Modelo dos Sensores
Os robots podem ser equipados com variados tipos de
sensores. Os sensores que interessam para a aplicação são
sensores de alcance, que medem distâncias para diferentes
ângulos, com o objectivo de ajudar na localização. Os mais
populares são os sensores a laser e sonares. Dependendo do
tipo, podem ter diferentes alcances mínimos e máximos,
resoluções angulares e precisões.
Figura 1: Decomposição do movimento em 3 componentes
Grupo 2, Sistemas Autónomos 2010 3
Pode-se considerar, genericamente, quatro tipos de erros que é "observado" pelos sensores na pose real do robot. A ideia do
afectam as medições dos sensores. Como já foi referido, estes resampling é que haja uma maior preferência de reprodução
erros afectam a forma como os pesos são atribuídos. Mesmo das amostras que melhor representam a pose real do robot,
em casos em que o valor medido não é muito coerente com a ideia que sugere uma selecção Darwinista.
posição da partícula devido a um erro, o peso é pequeno mas A forma mais intuitiva de implementar o resampling é o
não nulo, havendo possibilidade de não ser eliminada. algoritmo Independent Random Sampling que consiste em
Erros de precisão do sensor. Resultam de da gerar um número aleatório entre 0 e 1 (admitido pesos
resolução limitada dos sensores, do efeito normalizados) e ir somando os pesos das partículas de forma
atmosférico na medida, etc. Este erro pode ser sequencial até o valor da soma atingir esse valor gerado, a
modelado por uma gaussiana centrada na distância ultima partícula cujo peso foi somado é seleccionada, este
obtida através do mapa; processo que é equivalente a usar uma roleta, tem de ser
Medidas curtas devidas a objectos que não estão no repetido M vezes, sendo M o número de partículas.
mapa e que surgem entre o robot e elementos do
mapa. Pode ser representado por uma distribuição
exponencial entre o valor 0 e a distância da partícula
à parede.
Falhas de medição: Frequentemente o sensor falha
quando tenta medir uma superfície num ângulo muito
aberto, ou quando a superfície é preta ou absorvente
de luz. A falha também se pode dever por o obstáculo
estar simplesmente fora do alcance do sensor. Estes
erros resultam numa medição com o alcance máximo
do sensor. É portanto necessário considerar um
impulso no valor do alcance máximo.
Medidas aleatórias: Por outros factores, as medidas
podem retornar valores completamente aleatórios. Figura 4: Representação do algoritmo Low Variance Resampling
Isto é modelado facilmente com uma distribuição
uniforme.
Uma alternativa mais recomendada [1] é o algoritmo Low
Variance Resampling, em vez de escolher M números
aleatórios e seleccionar as partículas que correspondem a esses
números, é gerado apenas um numero aleatório entre 0 e M-1,
as partículas são escolhidas somando repetidamente M-1 e
seleccionando a partícula correspondente como se pode
observar na figura 4. Este algoritmo cobre o espaço de
amostras de forma mais sistemática e tem a importante
vantagem de ser computacionalmente mais eficiente, O(M)
contra O(MlogM) do algoritmo Independent Random
Sampling.
IV. IMPLEMENTAÇÃO
Figura 3: Combinação linear de distribuições de erro
O objectivo final é implementar o algoritmo MCL num robot e
Na figura 3 representa-se uma combinação pesada dos pesos fazer testes práticos. Para isso, foi utilizado o robot Pioneer
que os vários tipos de erros contribuem e para quando os P3-DX. Este robot possui encoders internos, disponibilizando
dados coincidem (centro do gaussiana). Note-se que é odometria. O robot vem equipado com sonar. Devido à
importante dar a cada modelação um peso diferente de acordo elevada imprecisão deste sensor, optou-se por utilizar um
com a sua importância, obtidos através de análise sensor de alcance laser (LRF), que tem um desempenho bem
experimental. melhor. O alcance máximo é de aproximadamente 4 metros,
tendo uma resolução angular de cerca de 0,5º, de -270º até
270º.
D. Reamostragem
O ambiente utilizado para a programação foi o Matlab, porque
Na fase de resampling (reamostragem) pretende-se criar um já existia uma biblioteca de interface básica com o robot.
novo conjunto de amostras partindo das amostras afectadas de Além disso o Matlab permite um desenvolvimento rápido de
deslocamento na fase de prediction e os pesos individuais alto nível, apesar de ser mais ineficiente em termos
obtidos na fase de update. computacionais do que linguagens compiladas como o C. Isto
Os pesos das amostras representam uma probabilidade (em é uma desvantagem para sistemas em tempo real, como é o
sentido lato) da pose, ser a pose real do robot, ou por outras caso.
palavras representa uma medida de coerência daquilo que é
esperado "observar" na pose da amostra e o que efectivamente
Grupo 2, Sistemas Autónomos 2010 4
largura
2,5 5 7,5 10 12,5
nº ang.
Figura 5: Mapa do local 360 1044 261 116 65,3 41,8
180 522 130 58 32,6 20,9
Numa primeira abordagem começou-se por uma 90 261 65 29 16,3 10,4
familiarização com os comandos do robot, construindo uma Tabela 1 – Tamanho ocupado em memória dependendo de 2
interface mais elaborada e testando o funcionamento da parâmetros
odometria e do sensor laser. Para ajustar os parâmetros do
modelo do movimento e do modelo de sensor usados, foi Transformou-se o mapa num bitmap, em que as áreas que o
necessário conhecer os factores de erro da odometria e do robot não pode ocupar estão em preto e as outras em branco.
laser. Adaptou-se a resolução do bitmap de acordo com a resolução
Na fig. 6 está o resultado de um dos testes feitos com o da grelha escolhida (10 cm), que resultou em 218x218 pixéis.
objectivo de se obter um erro da odometria após uma série de O bitmap está na Figura 7.
deslocações.
Figura 7: Obstáculos
V. RESULTADOS
Foram feitos vários testes práticos no local para detectar erros
e optimizar o programa para haver uma convergência. O
computador utilizado foi um netbook com poder de
processamento muito limitado, o que tornou essa optimização
ainda mais relevante.
Com 100 partículas o algoritmo converge em cerca de 40
Figura 8: Distâncias em cada ponto até à parede a 110º. Quanto
mais claro, maior a distância. As escalas estão em centímetros.
iterações. Na figura 10 a) b) e c) mostra-se a evolução das
partículas.
ParticleSET
MCL GetData
Update
Prediction
LaserData OdometryData
MotionModel
MovedParticles
c) d)
GetMapDistances
Update
Weights
Durante o teste aqui apresentado, na vigésima quarta iteração
ParticleSET GenerateNewSet já havia uma localização bem definida do robot e na iteração
seguinte, houve uma falha desconhecida – provavelmente foi
um erro na odometria ou do mapa e as partículas coincidiram
Figura 9: Estrutura geral da implementação do MCL com a parede - e as partículas voltaram a ficar dispersadas
aleatoriamente. O algoritmo conseguiu recuperar desta
A interface desenvolvida permite visualizar no mapa a situação passadas algumas iterações e convergir novamente.
localização das partículas, comandar o robot e iniciar uma
iteração do algoritmo a qualquer momento. VI. CONCLUSÕES
Com as várias partículas que compõem o conjunto de poses O algoritmo MCL foi implementado com sucesso, os testes
possíveis do robot, é necessário estimar uma única pose do realizados produziram resultados bastante satisfatórios. Na
robot. Foram testadas várias soluções, algumas em [1], que maioria dos testes efectuados, 100 partículas foram suficientes
foram testadas: média aritmética das poses, média ponderada para obter uma boa estimativa da localização do robot, isto
pelos pesos de cada partícula e finalmente divisão do espaço demonstra que o algoritmo tem potencial para ser utilizado
em partições e ponderação baseada no número de partículas com hardware de fraca capacidade computacional como
existentes em cada partição.
Grupo 2, Sistemas Autónomos 2010 6
VII. REFERENCIAS
[1] Thrun, Sebastian; Burgard, Wolfram; Fox, Dieter; “Probabilistics
Robotics”. MIT Press, 2005.
[2] Flanagan, Colin; “The Bresenham Line-Drawing Alforithm”. Internet:
www.cs.helsinki.fi/group/goa/mallinnus/lines/bresenh.html. [15 Nov.
2010]
[3] Ribeiro, M. I.; Lima, Pedro; “Localization, Mapping & Simultaneous
Localization and Mapping Part IV – Monte Carlo Localization”, Notas
teóricas de Sistemas Autónomos, Lisboa: Instituto Superior Técnico,
2008.
[4] Thrun, Sebastian; Lima, Pedro; “Probabilist Robotics Basics”, Notas
teóricas de Sistemas Autónomos, Lisboa: Instituto Superior Técnico,
2009.