1 / 46

Pathfinding

Geber Ramalho. Pathfinding. Motivação Técnicas clássicas e otimizações Transformação do espaço de busca. Pathfinding. Definição Obtenção de um melhor caminho de um ponto inicial para um objetivo de acordo com um ou mais critérios

alesia
Download Presentation

Pathfinding

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Geber Ramalho Pathfinding Motivação Técnicas clássicas e otimizações Transformação do espaço de busca

  2. Pathfinding • Definição • Obtenção de um melhor caminho de um ponto inicial para um objetivo de acordo com um ou mais critérios • Ex.: tempo, distância, periculosidade dos inimigos, velocidade, ocupação do mapa, etc. • diferente steering behaviors... • É um dos poucos consensos em termos de AI Engine

  3. Pathfinding: motivações • Aplicável para o cálculo de rotas • Cidadão comum: GPS, Google maps, etc. • Meio empresarial: Problemas de logística • Meio militar: Problemas táticos • Jogos digitais • Deslocamento dos NPCs • Análise de terreno e situação • Um dos poucos consensos em termos de AI Engine

  4. Pathfinding: jogos • Ainda não é um problema resolvido • Dave Pottinger: “AOE2 gasta 60-70% do tempo de simulação fazendo pathfinding” • Dificuldades • Evitar obstáculos, sobretudo os largos e côncavos • Levar em conta os pesos (tipos de terreno) • Diferentes critérios (mais curto, mais seguro, etc.) • Memória e tempo de processamento em função de • tamanho do terreno • número de unidades • número de jogadores

  5. Pathfinding: Exemplo • Napoléon en Russie - V. Corruble (LIP6) • Caminho mais curto início objetivo

  6. Pathfinding: Exemplo • Napoléon en Russie - V. Corruble (LIP6) • caminho menos visível

  7. Pathfinding: Exemplo • Napoléon en Russie - V. Corruble (LIP6) • caminho mais seguro

  8. Path-Finding - Estratégias • Reativas (online: executa enquanto procura) • Campos potenciais • Aleatórias • Traçado simples e robusto • Busca/planejamento (offline: busca e depois excuta) • Não Informadas (busca cega) • Informadas (busca heurística)

  9. Campos potenciais • Usa o princípio de campo gravitacional para determinar a direção do movimento • Alvo tem campo gravitacional atrativo • Obstáculos têm campo gravitacional repulsivo • Duas abordagens para • Soma vetorial (Attractor-repulsor) • online • Potential fields ou método gradiente • Pré-calculado e marcado no terreno

  10. Attractor-repulsor • Soma vetorial • Vetor do alvo: linha do alvo até o ponto em questão • Vetores dos campos dos obstáculos: a partir dos centros geométricos • Cálculo da direção e movimento • Intensidades dos campos são inversamente proporcionais às distâncias entre as entidades e o ponto em questão • Direção resultante em um ponto é a soma vetorial dos campos atrativo e repulsivo • Esta direção resultante é calculada a cada ciclo de tempo T segundos • A entidade se move na direção calculada por T segundos

  11. Attractor-repulsor • Obs • Caro, pois calcula tudo na hora, mas adaptativo • Pode ficar preso em mínimos locais t5=5T t4=4T Alvo Obstáculo t3=3T Cálculo da resultante t0=0 t2=2T t1=T

  12. Potential Fields • Método discreto • Cada tile do terreno tem um valor de potencial determinado pela influencia de • destino = potencial baixo • obstáculo e ponto de partida = potencial alto • O elemento “escorrega” para o potencial mais baixo • Obs • Barato, pois pré-calcula tudo, mas ruim se obstáculos se movimentam (recalcular) • Pode ficar preso em mínimos locais • Combinar informação local e global via propagação

  13. Path-Finding reativo (online) • Idéia • se movimentar em direção ao objetivo e pegar outra direção quando esbarrar nos obstáculos • Tecnicas • Aleatória • Tracing • Robust tracing

  14. Path-Finding reativo (online) • Direção aleatória • ao esbarrar, move em direção aleatoriamente e tenta de novo • problema: obstáculos grandes e côncavos

  15. Path-Finding reativo (online) • Simple Tracing • ao esbarrar, segue, em uma direção fixa, “tateando” o obstáculo até contorná-lo • Problema: quando parar de tatear? • Quando mudar de direção, testa se pode andar na direção do alvo sem voltar por onde já passou • Nem sempre funciona... Tateando sempre à direita

  16. Path-Finding reativo (online) • Robust tracing • Uma vez começado a tatear, se o ponto inicial de bloqueio está entre o objetivo e o agente, ao cruzar com a semi-reta traçada entre a posição original e o objetivo, não para de tatear • Caso volte à posição original, aborta • problema: pode tomar muito tempo fazendo tracing

  17. Path-Findingonline • Solução • Usar simple trace de cara • Quando um loop é detectado, mudar para Robust tracing • Infelizmente, • há situações onde é preciso uma busca inteligente • em particular para tratar “pesos de regiões” (estradas, rios, florestas, campos,...)

  18. Path-FindingBuscas Não-Informadas (offline) • Estratégias: • Busca em largura (Breadth-first search) • Busca em profundidade (Depth-first search) • Busca em profundidade limitada • Busca de custo uniforme (Dijkstra’s search) • Busca em profundidade iterativa • Direção • Início para meta • Meta para início • Bidirecional

  19. Path-FindingBuscas Informadas (offline) • Estratégias: A* • Combina a busca de custo uniforme (Dijkstra) com best-first f(x) = g(x) + h(x), onde • g = o que custou até agora • h = função heurística (o que provavelmente ainda vai custar) • Heurística determina eficiência: quanto mais próximo do real, embora sempre otimista, melhor • Completo, ótimo e correto • Listas Closed (já visitados) e Open (a visitar - fronteira)

  20. Melhor Primeiro: Busca Gulosa

  21. Melhor Primeiro: Busca A*

  22. Adaptações de A* • Mesmo sendo a melhor técnica, A* ainda tem limitações devido aos • Requisitos de tempo real • Limitações de memória disponível • Ineficiência dos algoritmos de manipulação das listas Open e Close • Qualidade da função h(n)

  23. Adaptações de A* • Alternativas para melhorias • Ajustes para melhorar desempenho/memória (visto em SI) • Iterative Deepening A* • Beam Search – Simplified Memory A* • Alterações na função h(x) • Algoritmo de Floyd-Warshall • Estruturas de dados • Representação do campo do jogo • Dados do estado da busca • Melhorias na manipulação das listas • Transformação do espaço de busca

  24. Estrutura de dadosRepresentação do mapa do jogo • Representação das áreas acessíveis de cada ponto e dos esforços para a movimentação • Diretamente no mapa, • em uma estrutura separada, ou • calculadas quando necessário • Representação das características na área • Diretamente no mapa, • ou em uma estrutura separada

  25. Estrutura de dados Dados do Estado da Busca • Pode-se incluir no nós, além da estrutura de busca básica,... • Coordenadas da posição do mapa • Atributos relevantes da entidade, como orientação e velocidade • Custo estimado até o objetivo (ou até o objetivo mais próximo) • Referências adicionais para outros nós • próximo elemento, elemento anterior ,“esquerda”, “direita”, ...

  26. Melhorias Estéticas • Obter trajetórias mais macias... • Ver demo de Marco Pinter

  27. Transformação do espaço de busca

  28. Transformação do espaço de busca • Idéia básica: • Busca realizada com “menos estados” para reduzir a complexidade da busca inicial • Técnicas • Hierarquização e agregação de células (ambiente discreto) • Discretização de ambientes contínuos

  29. Hierarquização e Agregação • Idéia • decompor busca inicial em sub-buscas mais simples => agrupar células (quadradinhos) em áreas maiores e fazer a busca hierarquicamente do maior para os menores • Divisão do mapa • Mapa deve ser dividido em grandes áreas contíguas cujas conectividades são conhecidas • Um ou dois “quadradinhos” (células) da borda entre cada par de áreas adjacentes são escolhidos

  30. Hierarquização e Agregação • Uma sucessão de buscas irá ser realizada • A primeira busca irá ser realizada em cima deste novo “espaço com menos quadradinhos” • As buscas sucessivas, em espaços transformados com mais “quadradinhos”, evitam iterações desnecessárias determinadas pelas buscas anteriores

  31. Hierarquização e Agregação • Exemplo: determinar a melhor rota terrestre entre Madri e Atenas utilizando o mapa da Europa • Cada país pode ser considerado uma área • Pontos nas bordas (fronteiras) dos países são definidos para a primeira busca • Melhor rota na primeira iteração: Espanha - França - Itália - Iugoslávia - Grécia • A primeira iteração evita que a bota correspondente à Itália seja incluída nos próximos passos da sequência hierárquica de buscas

  32. Hierarquização e Agregação

  33. Discretização de Espaço Contínuo • E se o jogo for em um espaço contínuo (não baseado em tiles)? • 2 abordagens vindas do planejamento de movimento de robôs • Cell decomposition • Skeletomization

  34. Discretização de Espaço Contínuo • Cell decomposition • discretização em células menores (idênticas ou não) e fixação de spots (pontos no “centro” das células) que serão ligados formando um grafo de caminhamento • exemplos: tiles, tiras, células cilíndricas, quadtrees,...

  35. Discretização de Espaço Contínuo • Tiles • Dividir o espaço em “ladrilhos” de resolução pré-definida • Ladrilhos inseridos total ou parcialmente em obstáculos são marcados como bloqueados • Permite movimento sem risco de colisão • Problema: difícil ajustar a granularidade

  36. Discretização de Espaço Contínuo Tiles (ladrilhos)

  37. Discretização de Espaço Contínuo • Quadtrees • O espaço é dividido em quadrados (tiles) • Cada quadrado que não é suficientemente homogêneo é recursivamente dividido em quatro quadrados • Os centros dos quadrados homogêneos que não estão em obstáculos são usados pela busca (spots) • Regiões das bordas dos obstáculos são consideradas bloqueadas

  38. Discretização de Espaço Contínuo Quadtrees Subdivisão do espaço Grafo (azul)

  39. Discretização de Espaço Contínuo • Tiras verticais ou horizontais • a dimensão em um dos eixos (x ou y) se expande até “esbarrar” em um obstáculo • problema: sobram espaços que, no entanto, não podem ser usados para manobras

  40. Discretização de Espaço Contínuo • Skeletomization • superposição de um grafo de caminhamento diretamente em função dos obstáculos • As buscas consideram apenas os caminhos do grafo • exemplos: manual (waypoints), grafo de visibilidade, polígonos convexos, diagrama de Voronoi, ...

  41. Discretização de Espaço Contínuo • Pontos de visibilidade • São os pontos críticos (quinas dos obstáculos) mas com uma folga para evitar colisões • Os caminhos possíveis (conexões) definidos entre os pontos críticos visíveis entre si • ou seja... não deve existir obstáculos entre estes pontos

  42. Discretização de Espaço Contínuo Pontos de Visibilidade Grafo (azul)

  43. Discretização de Espaço Contínuo • Polígonos convexos • Passo inicial • Quebrar o espaço (sem obstáculos) em polígonos convexos • A partir daí define os spots segundo 2 técnicas • C-Cells: cada vértice é conectado ao ao vértice mais próximo subdividindo o espaço em polígonos cujos centroides serão os spots • Maximum-area decomposition: similar mas os spots estão no meio das arestas que ligam os vértices

  44. Discretização de Espaço Contínuo Polígonos Convexos Subdivisão do espaço Grafo (azul) segundo “Maximum-area decomposition”

  45. Colaboração • Eduardo Calabria (egc@cin.ufpe.br) • Eduardo Laureano (eagcl@cin.ufpe.br) • Charles Madeira (Charles.MADEIRA@poleia.lip6.fr)

  46. Bibliografia & Links • Russel & Norvig: AIMA (cap 4, 5 e 25) • Bryan Stout, Smart Moves: Intelligent Path-Finding • http://www.gamasutra.com/features/programming/080197/pathfinding.htm • demo: ftp://ftp.gdmag.com/pub/src/oct96.zip • Game AI: The State of Industry • http://www.gamasutra.com/features/20001101/woodcock_pfv.htm • Stefan Baert, Motion Planning Using Potential Fields • http://www.gamedev.net/reference/articles/article1125.asp • Amit Patel, Amit´s Thoughts on Pathfinding • http://theory.stanford.edu/~amit/GameProgramming/index.html • Marco Pinter, Toward More Realistic Pathfinding • http://www.gamasutra.com/features/200103014/pinter_01.htm • Paul Tozour, Influence Mapping, in (ed) Mark Deloura, Game Programming Gems II.

More Related