2.3 Resumo
3.1.1 Explora¸ c˜ ao Baseada na Transformada de Distˆ ancia (Zelinsky)
Num ambiente em que o espa¸co livre ´e representado por uma grelha de c´elulas do mesmo tamanho (normalmente igual ao do robˆo), facilmente se estabelece um caminho entre dois pontos, visitando c´elulas adjacentes. Mas o problema est´a em saber que caminho tomar.
A transformada de distˆancia [46] o que faz ´e atribuir a cada c´elula um valor proporcional `
a distˆancia da mesma `a c´elula alvo, contornando obst´aculos. Considere-se que a distˆancia entre c´elulas adjacentes ´e de d. Uma meta tem de ser estabelecida para que este algoritmo funcione e , partindo desta c´elula, marcam-se os seus 8-vizinhos (Figura 3.2) com o valor d. De seguida, os vizinhos das c´elulas com valor d s˜ao marcados com um valor 2d. Este processo repete-se para todo o espa¸co livre, ficando com um aspeto semelhante ao da Figura 3.3.
Tendo todas as c´elulas assinaladas desta forma ´e poss´ıvel determinar, quer o caminho mais curto entre a partida e a meta, quer um trajeto de cobertura de todas as c´elulas (dado que, uma vez visitada, uma c´elula est´a explorada por completo). Para tra¸car ent˜ao a trajet´oria da partida para a meta, procura-se nos vizinhos da partida a c´elula com menor valor e visita- se essa mesma c´elula. A partir desta, segue-se novamente para o vizinho de menor valor. Repete-se este procedimento at´e se alcan¸car a meta, obtendo assim um trajeto semelhante ao da Figura 3.4a.
Para a explora¸c˜ao completa das c´elulas o algoritmo j´a ´e diferente. Neste caso o trajeto come¸ca a ser tra¸cado pela visita `a c´elula vizinha da partida que tem maior valor e s´o se visitam c´elulas de valor mais baixo quando nos seus vizinhos n˜ao existir nenhuma c´elula com valor igual ou superior. A ideia aqui ´e visitar sempre o vizinho com maior valor at´e alcan¸car a meta, obtendo uma trajet´oria semelhante `a da Figura 3.4b.
´
E necess´ario ter em aten¸c˜ao que, se o tamanho das c´elulas exceder o tamanho do robˆo, tem de se garantir que o agente ao visitar a c´elula a vai cobrir por completo, quer seja com os seus sensores de obst´aculos ou com um comportamento complementar (que lhe permita, por exemplo, por movimentos de vai e vem, como na Figura 3.13, abranger toda a c´elula). Se, por outro lado, o tamanho das c´elulas for menor que o tamanho do robˆo, estas trajet´orias deixam de ser eficientes, j´a que v˜ao ser exploradas as mesmas c´elulas v´arias vezes, desnecessariamente.
Figura 3.2: Representa¸c˜ao dos 8-vizinhos de uma c´elula.
(a) Transformada de trajet´oria. 24
(b) Transformada de trajet´oria de cober- tura total.
Figura 3.4: Exemplos de aplica¸c˜ao da TD para obten¸c˜ao de trajet´orias.
Transformada de obst´aculos
Apesar de alcan¸car os objetivos pretendidos, a TD usada por si s´o n˜ao ´e cem por cento eficiente. No caso do trajeto tra¸cado pela transformada de trajet´oria, este n˜ao previne o robˆo de navegar demasiado perto dos obst´aculos, enquanto que no caso da explora¸c˜ao por cobertura total o robˆo ´e for¸cado a realizar demasiadas curvas que podiam ser evitadas. S˜ao dados como exemplos destes casos as Figuras 3.5a e 3.7, respetivamente. De ter em aten¸c˜ao que nestas Figuras a TD usa dois valores para d, sendo d = 3 para os vizinhos verticais e horizontais e d = 4 para os vizinhos que se encontram nas diagonais. O facto de d ser igual para os 8-vizinhos ou n˜ao, vai depender do grau de precis˜ao e exigˆencia que se pretende, pois embora a distˆancia na diagonal seja diferente da distˆancia na horizontal/vertical, isso pode n˜ao ser relevante para a aplica¸c˜ao em causa.
Uma solu¸c˜ao para ambas as aplica¸c˜oes ´e o uso de outra transformada, que usada em conjunto com a anterior melhora em muito o desempenho do robˆo. Trata-se da transformada de obst´aculos (TO), que funciona de forma muito semelhante `a transformada de distˆancia. Basta considerar cada um dos obst´aculos como sendo metas e a aplica¸c˜ao da TO ´e feita usando a mesma metodologia da TD, criando um mapa semelhante ao da Figura 3.5b.
A ideia ´e, portanto, adicionar uma taxa de desconforto aos caminhos, que corresponde a andar muito perto das paredes, para assim escolher o percurso mais adequado. Seja ent˜ao Φ a transforma de trajet´oria de uma c´elula c cuja meta ´e cg:
Φ(c, cg) = argmin C∈Xccg l(C) + α X ci∈C cdanger(ci) (3.1) Na equa¸c˜ao anterior, Xcg
c ´e o conjunto de caminhos poss´ıveis de c para cg, sendo C
um desses caminhos; l(C) ´e o comprimento do caminho C; ci ´e uma c´elula no caminho C;
cdanger(ci) ´e a fun¸c˜ao que traduz o desconforto de entrar na c´elula ci e α ´e um fator de
fun¸c˜ao cdanger(ci) ´e calculada a partir da transformada de obst´aculos (Ω):
cdanger(ci) =
(X − Ω(ci))3 if Ω(ci) ≤ X
0 else (3.2)
Nesta equa¸c˜ao X ´e a distˆancia m´ınima aos obst´aculos a que se pretende que o robˆo navegue.
Como exemplo para o planeamento de trajet´orias, tendo uma transforma de distˆancia como a da Figura 3.5a e uma transformada de obst´aculos como a da Figura 3.5b (n˜ao se usaram necessariamente estes valores), obtˆem-se transformadas de trajet´orias semelhantes `as das Figuras 3.6. A raz˜ao pela qual os trajetos s˜ao diferentes nessas figuras deve-se aos valores usados na fun¸c˜ao cdanger(ci). Quanto maior for o seu valor, mais afastado dos obst´aculos anda
o robˆo, que ´e o que acontece na Figura 3.6b em rela¸c˜ao ´a Figura 3.6a.
Para o caso da explora¸c˜ao, ao serem somadas as duas transformadas (TD e TO) obt´em- se, por exemplo, um mapa marcado com os valores da Figura 3.8a. Ao contr´ario do que se passava no mesmo mapa s´o com a TD (Figura 3.7b), agora o robˆo faz muito menos curvas como se pode ver na Figura 3.8b.
24 (a) Transformada de distˆancia e de trajet´oria.
24
(b) Transformada de obst´aculos.
Figura 3.5: Aplica¸c˜ao da transformada de distˆancia, de trajet´oria e de obst´aculos a um mapa de exemplo [46].
Tendo uma representa¸c˜ao do mundo armazenada numa grelha de c´elulas, esta ´e uma boa abordagem para garantir a explora¸c˜ao do mapa. Para o funcionamento do algoritmo, ´e sempre necess´ario que sejam definidos os pontos de chegada e partida e tamb´em tem de se saber o mapa completo antes de aplicar as transformadas. Com estas limita¸c˜oes, n˜ao ´e poss´ıvel usar este algoritmo para explora¸c˜ao com o objetivo de mapeamento do mapa, uma vez que este tem de ser dado `a partida.