12
1 HIDDEN MARKOV MODEL – EXEMPLO DE APLICAÇÃO Nuno Pessanha Santos [email protected] [email protected] https://marinha.academia.edu/NunoPessanhaSantos 1. Introdução Tem como objetivo a elaboração de uma solução baseada num Hidden Markov Model (HMM), para um problema de auto localização de um robô numa grelha. O presente relatório encontra-se estruturado da seguinte forma: capítulo 2 - dedicado à descrição do problema; capítulo 3 - focado na formulação matemática por detrás do problema de estudo; capítulo 4 - apresentados os principais resultados e a descrição da implementação em MATLAB ® ; capítulo 5 - efetuadas algumas conclusões do trabalho desenvolvido. 2. Problema O enunciado do problema pretende que se desenvolva um sistema de auto localização para um robô móvel, num espaço finito e limitado a duas dimensões uma sala, com obstáculos. Por forma a implementar um Hidden Markov Model é assumido que esta sala é representável por uma grelha bidimensional discreta. A posição inicial do robô é desconhecida e o seu modelo de movimento na sala será feito de modo aleatório, considerando que o robô se move sempre entre cada instante de tempo. O sistema a desenvolver tem como objetivo principal determinar a probabilidade do robô se encontrar numa célula especifica, considerando todas as observações feitas até ao momento. As observações são efetuadas recorrendo a sensores que detetam obstáculos nas proximidades, sendo que foram exploradas duas alternativas (Figura 1): Deteção em 4 direções e em 8 direções. Figura 1 (Esq.) Deteção em 4 direções e (Dir.) deteção em 8 direções. Na Figura anterior as bolas verdes representam a capacidade do robô em aferir em cada instante de tempo se tem obstáculos na sua vizinhança ou não, sendo que a bola azul representa a localização do robô. Um exemplo de grelha (10 por 10) pode ser visto na Figura 2 em que as bolas vermelhas representam obstáculos, ou seja, posições que o robô não poderá ocupar.

HIDDEN MARKOV MODEL – Exemplo de Aplicação

Embed Size (px)

Citation preview

1

HIDDEN MARKOV MODEL – EXEMPLO DE APLICAÇÃO

Nuno Pessanha Santos

[email protected]

[email protected]

https://marinha.academia.edu/NunoPessanhaSantos

1. Introdução

Tem como objetivo a elaboração de uma solução baseada num Hidden Markov Model

(HMM), para um problema de auto localização de um robô numa grelha.

O presente relatório encontra-se estruturado da seguinte forma: capítulo 2 - dedicado à

descrição do problema; capítulo 3 - focado na formulação matemática por detrás do problema de

estudo; capítulo 4 - apresentados os principais resultados e a descrição da implementação em

MATLAB®; capítulo 5 - efetuadas algumas conclusões do trabalho desenvolvido.

2. Problema

O enunciado do problema pretende que se desenvolva um sistema de auto localização para

um robô móvel, num espaço finito e limitado a duas dimensões – uma sala, com obstáculos. Por

forma a implementar um Hidden Markov Model é assumido que esta sala é representável por uma

grelha bidimensional discreta. A posição inicial do robô é desconhecida e o seu modelo de

movimento na sala será feito de modo aleatório, considerando que o robô se move sempre entre

cada instante de tempo.

O sistema a desenvolver tem como objetivo principal determinar a probabilidade do robô se

encontrar numa célula especifica, considerando todas as observações feitas até ao momento. As

observações são efetuadas recorrendo a sensores que detetam obstáculos nas proximidades, sendo

que foram exploradas duas alternativas (Figura 1): Deteção em 4 direções e em 8 direções.

Figura 1 – (Esq.) Deteção em 4 direções e (Dir.) deteção em 8 direções.

Na Figura anterior as bolas verdes representam a capacidade do robô em aferir em cada

instante de tempo se tem obstáculos na sua vizinhança ou não, sendo que a bola azul representa a

localização do robô.

Um exemplo de grelha (10 por 10) pode ser visto na Figura 2 em que as bolas vermelhas

representam obstáculos, ou seja, posições que o robô não poderá ocupar.

2

Figura 2 - Sala (grelha) e localização dos obstáculos (bolas vermelhas).

A sala representa o espaço total do robô (cada estado corresponde a uma célula sem

obstáculo) e a sua perceção do ambiente pode alterar uma vez que a mudança da posição do robô

atualiza a informação que tem. As leituras dos sensores em cada instante de tempo correspondem

às observações a considerar, isto é, a única coisa que o robô sabe é se há (ou não) obstáculos nas

células adjacentes nas direções dos sensores.

O movimento do robô é aleatório, mas a cada iteração o robô só se pode movimentar para

uma das células adjacentes das direções predefinidas (4 ou 8 direções), desde que não estejam

ocupadas por um obstáculo e desde que estejam dentro dos limites da sala.

Para resolver este problema vai ser utilizado o algoritmo de Baum – Forward, cuja

formulação matemática será abordada no próximo capítulo.

3. Formulação do Problema – HMM

Um HMM é um processo onde existe um dado conjunto de variáveis de estado

(𝑥1, 𝑥2, … , 𝑥𝑛) e uma sequência de observações (𝑦1, 𝑦2, … , 𝑦𝑛) e onde o estado da variável x no

instante de tempo t (𝑥𝑡) só depende do estado dessa variável no instante anterior (𝑥𝑡−1). As

observações no instante t (𝑦𝑡) apenas dependem das variáveis de estado nesse instante (𝑥𝑡).

No problema de estudo, as variáveis de estado (𝑥𝑡) correspondem à célula ocupada pelo robô

em cada instante de tempo e as observações (𝑦𝑡) correspondem aos dados obtidos pelos sensores.

O estado seguinte (𝑥𝑡+1), que corresponde a uma nova localização, é escolhido aleatoriamente

pelo robô, dadas as células livres adjacentes.

Num HMM verificam-se as seguintes propriedades:

𝑃(𝑥𝑡|𝑥1:𝑡−1) = 𝑃(𝑥𝑡|𝑥𝑡−1), ou seja, a probabilidade de o robô estar numa determinada

célula num instante de tempo depende apenas da localização anterior;

𝑃(𝑦𝑡|𝑥1:𝑡, 𝑦1:𝑡−1 ) = 𝑃(𝑦𝑡|𝑥𝑡), ou seja, é assumido que o valor obtido pelo sensor apenas

depende da sua localização na grelha no instante em que a medição é efetuada.

Posto isto, as condições para o problema ser considerado um HMM estão reunidas. Um

HMM é caracterizado por três elementos:

o vetor π - representa a distribuição de probabilidade inicial para cada estado, ou seja, a

distribuição da probabilidade para 𝑡 = 1 onde 𝑃(𝑥1 = 𝑖 ) = 𝜋𝑖;

0 2 4 6 8 10

0

1

2

3

4

5

6

7

8

9

10

11

Environment - Known

3

Matriz A - representa a probabilidade de transição entre estados (do estado i para o estado

j), tal que 𝑃(𝑥𝑡 = 𝑗 |𝑥𝑡−1 = 𝑖) = 𝑎𝑖𝑗;

Matriz B - representa para cada estado a probabilidade de se obter cada uma das

observações, tal que os seus elementos verifiquem 𝑃(𝑦𝑡 = 𝑗 |𝑥𝑡 = 𝑖) = 𝑏𝑖𝑗, para o caso

do espaço de observação discreto do problema.

No problema, a matriz 𝐴 corresponde às probabilidades de, estando o robô numa dada célula,

transitar para as células possíveis adjacentes (correspondente ao movimento do robô),

considerando todas as células existentes (ou seja, as que não estão ocupadas) e a matriz B

corresponde às probabilidades de, estando o robô numa dada célula obter uma determinada

observação através do seu sensor.

Dando um exemplo mais concreto e aplicado ao problema de estudo, considere-se a Figura

3, onde se encontram numeradas todas as células livres da sala, ou seja, todas as localizações que

podem ser ocupadas pelo nosso robô.

Figura 3 – Sala (grelha) com numeração das células livres.

Considerando que num instante de tempo 𝑡 temos 𝑥𝑡 = 19 (correspondente à célula 19 da

Figura 3). Podemos verificar que 𝑎19,28 = 𝑃(𝑥𝑡 = 28 |𝑥𝑡−1 = 19) = 1 e que 𝑎13,28 = 𝑃(𝑥𝑡 =

13 |𝑥𝑡−1 = 19) = 1, mas 𝑎19,𝑗 = 𝑃(𝑥𝑡 = 𝑗 |𝑥𝑡−1 = 19) = 0, qualquer que seja a posição 𝑗 ≠

{13,28}. Ou seja, a matriz A tem em cada linha as probabilidades de transição para as células

adjacentes possíveis do robô se movimentar. Sendo os valores igualmente prováveis e

considerando que o robô tem apenas 4 graus de liberdade para se movimentar, teremos que

𝑎19,13 = 𝑎19,28 = 0,5 e 𝑎19𝑗 = 0 ∀ 𝑗 ≠ {13,28}.

Assim, a matriz A é construída efetuando este procedimento para todas as (𝑖) células livres

de obstáculos e para as (𝑗) possibilidades de transição em cada célula, levando a que a matriz (𝑎𝑖𝑗)

seja construída da seguinte forma:

𝐴 = [

𝑎11 ⋯ 𝑎1𝑗

⋮ ⋱ ⋮𝑎𝑖1 ⋯ 𝑎𝑖𝑗

] (3.1)

Ao serem efetuadas leituras com o sensor (considerando neste exemplo 4 direções), irá ser

obtido o valor 1 para o caso de se detetar um obstáculo e 0 no caso de não detetar nenhum

0 2 4 6 8 10

0

1

2

3

4

5

6

7

8

9

10

11

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

0

17

0

18

0

0

19

0

20

21

22

23

24

25

26

27

28

29

30

31

32

33

0

34

35

36

37

38

39

40

0

41

42

43

44

45

46

47

48

49

50

51

0

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

0

0

69

70

71

72

73

0

74

75

76

77

78

79

80

0

81

82

83

84

85

86

87

88

4

obstáculo. Admitindo novamente 𝑥𝑡=19, a medição do sensor será 𝑦𝑡 = [1,1,0,0] (Norte, Sul,

Oeste, Este). Isto indicará como opção de movimento para o instante seguinte 𝑥𝑡+1 = 13 ou

𝑥𝑡+1 = 28. Recorda-se que o movimento do robô é aleatório.

Para cada célula o robô pode obter uma de 16 (24) observações (leitura em 4 direções) ou

256 (28) observações (leitura em 8 direções) sendo que a matriz B terá i linhas, correspondentes

ao número de células livres existentes e k colunas, correspondente aos resultados obtidos pelo

sensor. A matriz B apresenta a seguinte estrutura:

𝐵 = [𝑏11 ⋯ 𝑏1𝑘

⋮ ⋱ ⋮𝑏𝑖1 ⋯ 𝑏𝑖𝑘

] (3.2)

Se o sensor for perfeito só existe uma leitura possível em cada posição resultando em 𝑏𝑖𝑗 =

𝑃(𝑦𝑡 = 𝑗|𝑥𝑡 = 𝑖) = 1 ou 𝑏𝑖𝑘 = 𝑃(𝑦𝑡 = 𝑘|𝑥𝑡 = 𝑖) = 0, ∀ 𝑘 ≠ 𝑗. Foram simuladas condições em

que o sensor é afetado por ruído, sendo que os pormenores de implementação serão descritos

pormenorizadamente mais à frente.

Como foi referido no capítulo anterior, foi utilizado o algoritmo de Baum – Forward que é

um algoritmo recursivo que calcula

𝛼𝑡(𝑖) = 𝑃(𝑥𝑡 = 𝑖 , 𝑦1:𝑡) (3.3)

A probabilidade de o robô estar numa determinada posição dadas todas as medições até a

essa iteração é dada através das seguintes expressões:

𝛼1(𝑗) = 𝑏𝑗(𝑦1). 𝜋𝑗 (3.4)

𝛼𝑡(𝑗) = 𝑏𝑗(𝑦𝑡) ∑ 𝑎𝑖𝑗𝑛𝑖=1 𝛼𝑡−1(𝑖) (3.5)

Ou alternativamente na forma matricial:

𝛼1(𝑗) = 𝑑𝑖𝑎𝑔(𝑦1). 𝜋𝑗 (3.6)

𝛼𝑡(𝑗) = 𝑑𝑖𝑎𝑔(𝑦𝑡)𝐴𝑇𝛼𝑡−1(𝑖) (3.7)

onde 𝑑𝑖𝑎𝑔(𝑦𝑡) é uma matriz diagonal com a diagonal principal a ser dada pelas colunas da

matriz 𝐵 correspondente à saída do sensor 𝑦𝑡. A probabilidade de o robô estar numa determinada

localização dadas todas as medições até aquela iteração é dada por:

𝑃(𝑥𝑡 = 𝑖|𝑦1:𝑡) =𝑃(𝑥𝑡 = 𝑖, 𝑦1:𝑡)

𝑃(𝑦1:𝑡)=

𝑃(𝑥𝑡 = 𝑖, 𝑦1:𝑡)

∑ 𝑃(𝑥𝑡 = 𝑖, 𝑦1:𝑡)𝑛𝑖=1

⇔ 𝑃(𝑥𝑡 = 𝑖|𝑦1:𝑡) =𝛼𝑡(𝑖)

∑ 𝛼𝑡(𝑖)𝑛𝑖=1

(3.8)

Na próxima seção vai ser descrita a implementação experimental elaborada recorrendo ao

software MATLAB®.

4. Descrição e Resultados

Este capítulo descreve alguns aspetos da implementação efetuada em MATLAB®, bem

como a descrição de algumas das simulações efetuadas em subcapítulos dedicados para o efeito.

Se considerarmos uma grelha sem obstáculos e com 𝑛 estados possíveis ( 𝑛 =𝑝𝑜𝑠𝑖çõ𝑒𝑠 𝑛𝑎 𝑔𝑟𝑒𝑙ℎ𝑎 − 𝑜𝑏𝑠𝑡á𝑐𝑢𝑙𝑜𝑠), a matriz 𝐴 vai ter 𝑛 × 𝑛 elementos possíveis e a matriz 𝐵

5

𝑛 × 𝑘. De acordo com a formulação do problema, o número de estados possíveis para transitar e

as medições efetuadas vão originar matrizes esparsas. Em vez de serem calculadas inteiramente

e armazenadas, apenas os elementos que são diferentes de zero são armazenados. Se forem

gravados todos os elementos de uma matriz de 150 × 150 (sem obstáculos) vai levar a 22500

estados possíveis sendo que se considerarmos 8 bytes (e.g. double) por cada elemento vamos ter

uma ocupação de 1,8 GB. Nos sistemas atuais este valor não é um problema, mas por forma a

otimizar isto apenas são guardados os valores diferentes de zero para ambas as matrizes

implementando assim uma série de ciclos em cada iteração por forma a efetuar o respetivo

cálculo.

Relativamente à medição feita pelo sensor este dá-nos um conjunto de bits que representam

a localização dos obstáculos na grelha ( 𝑏𝑖𝑗 = 𝑃(𝑦𝑡 = 𝑗|𝑥𝑡 = 𝑖) = 1 ou 𝑏𝑖𝑘 =

𝑃(𝑦𝑡 = 𝑘|𝑥𝑡 = 𝑖) = 0, ∀ 𝑘 ≠ 𝑗 ), sendo que este valor foi considerado um número binário e

convertido em decimal obtendo apenas um único número para caracterizar a medição em cada

instante de tempo.

Uma das preocupações durante a elaboração deste trabalho foi garantir que o programa era

escalável, e que poderia ser facilmente alterado o número de obstáculos e de células da grelha do

problema para que não se ficasse preso a um cenário específico, mas se pudesse alterar facilmente

estes parâmetros para tal toda a computação dado o tamanho da grelha, os obstáculos e o modelo

de movimento é feita de forma autónoma (exemplo na Figura 4).

(a) (b) Figura 4 – Exemplo de grelha de 20 posições.

A probabilidade de um robô estar numa determinada posição dadas todas as medições até

um determinado instante de tempo decresce até valores que podem ser difíceis de representar. De

acordo com (3.8), é possível normalizar o resultado obtido fazendo com que a soma seja unitária

e contornando este problema (como implementado na Figura 5).

De seguida é apresentado algum pseudocódigo que representa o algoritmo implementado.

6

Figura 5 – Descrição do algoritmo implementado – pseudocódigo.

Nos seguintes subcapítulos são dados alguns exemplos de implementação, abordando alguns

casos específicos em simulação.

4.1.1. Movimentação e medição em 4 direções

Nesta simulação foi considerado que o robô é forçado a mover-se entre cada iteração,

escolhendo o seu destino pelos seus nós vizinhos numa vizinhança possível de 4 direções, sendo

que o sensor também é capaz de detetar obstáculos numa vizinhança de 4 direções. Na Figura 6 é

possível observar a probabilidade para a localização do robô, dadas as medições. As bolas

vermelhas representam obstáculos e a bola verde representa a posição atual do robô.

Não foi representada a probabilidade 𝑃(𝑥1) mas esta é considerada equiprovável para todas

as localizações passíveis de serem ocupadas pelo robô. Em (a) é possível verificar que o robô

deteta um obstáculo à sua direita, sendo que todas as localizações em que existem obstáculos à

direita são dadas como localizações igualmente prováveis. Em (b) o robô move-se para outra

localização tendo agora um obstáculo à sua esquerda, sendo que agora nem todas as localizações

em que seria possível obter um obstáculo à esquerda são dadas como prováveis tendo em conta

as medições efetuadas. Sendo que em (c), (d) e (e) vão ser recolhidos cada vez mais dados de

sensor e obtendo com cada vez mais certeza (valor das probabilidades a ficar concentrado em

determinados estados) da posição do robô na grelha. Até que a probabilidade para um determinado

Algoritmo implementado - HMM

Inicialização:

Definição do tamanho da grelha;

Definição da localização dos obstáculos;

Definição das direções de movimento;

Cálculo da grelha – Estados possíveis;

Cálculo da matriz A – Guardados elementos diferentes de 0;

Cálculo da matriz B – Guardados elementos diferentes de 0;

Cálculo da posição inicial do robô (aleatória);

Fim de Inicialização

Baum (1ª iteração):

Medição do sensor (conversão para decimal);

𝛼1(𝑗) = 𝑏𝑗(𝑦1). 𝜋𝑗;

Normalizar valores obtidos;

Mostrar resultados na grelha;

Mover para uma nova posição;

Fim da 1ª iteração

Baum (Restantes iterações):

Medição do sensor (conversão para decimal);

𝛼𝑡(𝑗) = 𝑏𝑗(𝑦𝑡) ∑ 𝑎𝑖𝑗𝑛𝑖=1 𝛼𝑡−1(𝑖);

Normalizar os valores obtidos;

Mostrar resultados na grelha;

Se valor máximo de 𝛼𝑡 é maior que um threshold parar ciclo;

Mover para uma nova posição;

7

estado é igual a 1, e é obtida com 100% de certeza a localização do robô na grelha, deixando de

existir incerteza na sua localização.

(a) (b)

(c) (d)

(e) Figura 6 – Movimentação e medição em 4 direções: (a) 𝑷(𝒙𝟏|𝒚𝟏); (b) 𝑷(𝒙𝟐|𝒚𝟏:𝟐); (c) 𝑷(𝒙𝟑|𝒚𝟏:𝟑); (d) 𝑷(𝒙𝟒|𝒚𝟏:𝟒); (e)

𝑷(𝒙𝟓|𝒚𝟏:𝟓).

4.1.2. Movimentação e medição em 8 direções

Nesta simulação foi novamente considerado que o robô é forçado a mover-se entre cada

iteração, escolhendo o seu destino pelos seus nós vizinhos numa vizinhança possível de 8

direções, sendo que o sensor também é capaz de detetar obstáculos numa vizinhança de 8 direções.

Na Figura (7) seguinte é possível ver a probabilidade para a localização do robô, dadas as

medições. As bolas vermelhas representam obstáculos e a bola verde representa a posição atual

do robô.

8

(a) (b) Figura 7 – Movimentação e medição em 8 direções: (a) 𝑷(𝒙𝟏|𝒚𝟏); (b) 𝑷(𝒙𝟐|𝒚𝟏:𝟐).

𝑃(𝑥1) é mais uma vez considerada igualmente provável para todas as localizações passíveis

de serem ocupadas pelo robô. É possível verificar agora que com mais informação proveniente

do sensor a incerteza diminui mais rapidamente pois é possível recolher mais informação em cada

iteração (instante de tempo). Em (a) é possível verificar que o robô deteta um obstáculo a sudoeste,

sendo que todas as localizações em que existem obstáculos a sudoeste são dadas como

localizações igualmente prováveis. Em (b) é possível verificar que a incerteza desaparece, e é

obtido com 100% certeza a localização do robô na grelha.

4.1.3. Erro de sensor - 4 direções

O erro de sensor é simulado fazendo com que o sensor tenha observações erradas (ou com

probabilidade de erro). O espaço de observação neste caso concreto vai ser de 24 = 16

combinações possíveis, se consideramos que numa determinada iteração a saída do sensor é 𝒮 no

caso de um sensor ideal (sem erro) temos que 𝑃(𝑦𝑡 = 𝒮|𝑥𝑡) = 1 e 𝑃(𝑦𝑡 ≠ 𝒮|𝑥𝑡) = 0 . Se

considerarmos que estamos na presença de erro vamos ter 𝑃(𝑦𝑡 = 𝒮|𝑥𝑡) = 𝜃 e 𝑃(𝑦𝑡 ≠ 𝒮|𝑥𝑡) =1−𝜃

24−1, com 0 ≤ 𝜃 ≤ 1, sendo que assim o sensor vai simular um ambiente em que as medições são

ruidosas. Foi utilizado um 𝜃 = 0,85 nas simulações apresentadas nas Figuras abaixo.

(a) (b)

9

(c) (d)

(e) (f) Figura 8 – Movimentação e medição em 4 direções com erro: (a) 𝑷(𝒙𝟏|𝒚𝟏); (b) 𝑷(𝒙𝟐|𝒚𝟏:𝟐); (c) 𝑷(𝒙𝟑|𝒚𝟏:𝟑); (d)

𝑷(𝒙𝟒|𝒚𝟏:𝟒); (e) 𝑷(𝒙𝟓|𝒚𝟏:𝟓); (f) 𝑷(𝒙𝟔|𝒚𝟏:𝟔).

Não foi representada a 𝑃(𝑥1) mas esta é considerada igualmente provável para todas as

localizações passíveis de serem ocupadas pelo robô. É possível verificar que o robô demora mais

algumas iterações a verificar corretamente onde está, sendo que ao utilizar um sensor perfeito a

incerteza associada à sua localização é menor. É mesmo possível verificar em (d) e (e) que apesar

de existir alguma certeza na localização do robô continuam a existir alguns pontos que mantêm

probabilidade (embora menor) da sua localização. Até que chega finalmente a uma posição em

que a sua probabilidade é de aproximadamente 0,85, sendo que nas restantes localizações verifica-

se a existência de uma probabilidade residual.

4.1.4. Erro de sensor - 8 direções

O erro de sensor é simulado, fazendo com que o sensor tenha observações erradas. Muito à

semelhança do efetuado no subcapítulo anterior temos que o espaço de observação é de 28 = 256

combinações possíveis, se consideramos que numa determinada iteração a saída do sensor é 𝒮 no

caso de um sensor ideal (sem erro) temos que 𝑃(𝑦𝑡 = 𝒮|𝑥𝑡) = 1 e 𝑃(𝑦𝑡 ≠ 𝒮|𝑥𝑡) = 0 . Se

considerarmos que estamos na presença de erro vamos ter 𝑃(𝑦𝑡 = 𝒮|𝑥𝑡) = 𝜃 e 𝑃(𝑦𝑡 ≠ 𝒮|𝑥𝑡) =1−𝜃

28−1, com 0 ≤ 𝜃 ≤ 1, sendo que assim o sensor vai simular um ambiente em que as medições são

ruidosas. Foi utilizado um 𝜃 = 0,85 nas simulações apresentadas nas Figuras abaixo.

10

(a) (b)

(c) Figura 9 – Movimentação e medição em 8 direções com erro: (a) 𝑷(𝒙𝟏|𝒚𝟏); (b) 𝑷(𝒙𝟐|𝒚𝟏:𝟐); (c) 𝑷(𝒙𝟑|𝒚𝟏:𝟑).

Não foi representada a 𝑃(𝑥1) mas esta é considerada igualmente provável para todas as

localizações passíveis de serem ocupadas pelo robô. É possível verificar que apesar de termos

introduzido incerteza na medição obtemos uma estimativa com um grau de confiança elevado

(probabilidade elevada), porque apesar de existir incerteza na medição ao estarmos a recolher

mais informação em cada instante de tempo acaba por, de certa forma, “compensar” esta

incerteza.

4.1.5. Percurso predefinido

Por forma a comparar capacidades de medição dos sensores e a vantagem de termos mais

informação por parte do sensor em cada instante de tempo, foi efetuado um percurso predefinido

conforme ilustrado na Figura 10.

Figura 10 – Movimentação num percurso predefinido.

Ao fim de 3 iterações utilizando o sensor de 8 direções a posição do robô é estimada com

sucesso, enquanto o sensor de 4 direções necessita de 12 iterações (Figura 11) para obter com

certeza a posição do robô.

11

Este percurso foi escolhido de forma propositada para explorar o facto de, por exemplo, na

posição 3 o sensor de 4 direções não detetar qualquer obstáculo, enquanto que o sensor de 8

direções deteta um obstáculo a sudoeste. A deteção de obstáculos (informação) da grelha é um

dos elementos essenciais para poder aferir a localização do robô, pois essa informação vai fazer

com que a incerteza diminua e a posição do robô seja estimada com sucesso.

(a) (b) Figura 11 – Movimentação num percurso predefinido: (a) 𝑷(𝒙𝟏𝟐|𝒚𝟏:𝟏𝟐) - sensor 4 direções; (b) 𝑷(𝒙𝟑|𝒚𝟏:𝟑) – sensor 8

direções.

5. Conclusões

O trabalho atual apresenta um problema de localização numa grelha discreta que foi

formulado e resolvido usando HMM. Para tal foi utilizado o algoritmo de Baum – Forward que

possibilitou uma implementação simples utilizando o software MATLAB®.

Foram abordadas duas configurações possíveis de sensor (4 e 8 direções) bem como a

possibilidade de existência de incerteza na medição. Foi também explorada a possibilidade de

movimentação em 4 e 8 direções conforme a respetiva configuração de sensor escolhida.

Outros cenários e possibilidades poderiam ser testados, como por exemplo a possibilidade

de ficar na mesma posição entre iterações, a existência de memória de movimento em que o robô

procurasse não repetir posições onde tivesse estado, outro tipo de sensores, entre muitas outras

possibilidades. Seria impossível contemplar todas estas possibilidades em tempo útil, sendo que

a solução implementada permite uma correta elaboração de um HMM e de uma possibilidade de

aplicação real.

Algumas conclusões nesta aplicação específica são:

Apesar da introdução de erro de medição no sensor, ao utilizar o sensor de 8 direções

(mais informação em cada iteração) vai existir uma compensação dessa incerteza

obtendo valores precisos;

Ao introduzir erro de medição obtém-se sempre algum nível de incerteza, sendo que

a probabilidade máxima e respetiva estimação do robô vai ser inferior a 1;

Mais informação do sensor leva a melhores e mais rápidos resultados (como

esperado);

Pontos na grelha com as mesmas medições de sensor causam sempre incerteza na

sua localização, sendo esta incerteza é menor à medida que se vai recolhendo mais

informação do ambiente (mais medições do sensor).

Outro fator que é importante realçar é capacidade do programa desenvolvido ser invariante

relativamente ao número de estados possíveis e obstáculos, bastando que estes sejam definidos

inicialmente. Também a matriz 𝐴 e 𝐵 são calculadas e armazenadas de acordo com esta

informação, armazenando apenas os valores diferentes de 0 por forma a otimizar a memória

utilizada.

12

NOTAS:

Código utilizado disponível em:

https://github.com/Pessanha24/HMM_ToyExample_Matlab