Robótica Inteligente Módulos Funcionais de um (hipotético) Robô Móvel Inteligente: Módulos Funcionais relacionados com o Controlo 2003 Eugénio Oliveira Navegação do Robô Módulos da Arquitectura de controlo hipotética Módulos Funcionais relacionados com a Navegação Objectivos essenciais na Navegação. Funções para responder a: Para onde ir? Por onde ir? Onde estive? Onde estou? 2003 Eugénio Oliveira Navegação do Robô Navegação envolve: Percepção Acção Planeamento Representação Arquitectura de controlo Hardware Eficiência computacional Resolução de Problemas O Planeamento clássico assume: sensores sem erros e robô com capacidade de localização Planeamento de caminhos (Navegação) lida com ruido, incertezas, mapeamento 2003 Eugénio Oliveira Navegação do Robô Tipos de algoritmos para planeamento do Movimento: A- Decomposição celular: espaço contínuo dividido em um número finito de células levando a uma pesquisa discreta. B- Esqueletização: calcular um “esqueleto” unidimensional do espaço (uma linha) C- Navegação baseada em marcos: assume a existência de regiões onde o robô pode ser localizado através de marcos fixos. Fora delas terá apenas uma orientação. D- Algorítmos “em-linha”: assumem o desconhecimento completo do ambiente 2003 Eugénio Oliveira Navegação do Robô A- Decomposição celular: espaço contínuo dividido em um número finito de células levando a uma pesquisa discreta. Memória Espacial: Representação do Mundo para o Robô Processa e representa a informação sensorial Infere informação relevante para a Navegação Funções ligadas à Memória Espacial: atenção ao que procurar raciocinar sobre hipóteses (Pode atravessar esta porta?) planear para encontrar o melhor caminho coligir nova informação 2003 Eugénio Oliveira Navegação do Robô Memória Espacial Quantitativa: Espaço em termos de distâncias físicas Perspectiva independente (de cima) Pode gerar memória espacial qualitativa Memória Espacial Qualitativa: Espaço em termos de ligações entre marcas Perspectiva do robô 2003 Eugénio Oliveira Navegação do Robô Na determinação de caminhos é importante: decompor o caminho em partes entre pontos intermédios aproximar ao melhor caminho como representar o conhecimento qual o algoritmo Espaço de configuração: permite representar localização e orientação do Robô e dos Objectos assume-se: robô redondo, 2 graus de liberdade, holonómico (pode rodar sobre um eixo) “crescimento dos obstáculos” de acordo com a largura do robô. Robô transforma-se num ponto sem dimensões 2003 Eugénio Oliveira Navegação do Robô Posição final Robô Objectos aumentados Posição inicial Robô 2003 Eugénio Oliveira Navegação do Robô Objectos aumentados Robô considerado como um ponto 2003 Eugénio Oliveira Navegação do Robô Exemplos de representações de Configurações de Espaço A- Decomposição celular: espaço contínuo dividido em um número finito de células levando a uma pesquisa discreta. 1- Dividir o espaço livre E em regiões simples (ex: rectangulares) contíguas; 2- Determinar que células são adjacentes a outras e construir um grafo de adjacências; Os vértices do grafo são as células; arcos juntam nós correspondentes a células contíguas; 3- Pesquisar um caminho entre os nós (células) início e objectivo; 4- da sequência de células encontrada para o caminho, compute trajectos dentro de cada célula de um ponto na fronteira com a célula anterior até à fronteira com a próxima célula; 2003 Eugénio Oliveira Navegação do Robô A- Decomposição celular: espaço contínuo dividido em um número finito de células levando a uma pesquisa discreta. 1- Dividir o espaço livre E em regiões simples (ex: rectangulares) contíguas; 2003 Eugénio Oliveira Navegação do Robô Células simples (rectangulares) Ligar as fronteiras de cada célula por um segmento de recta A Decomposição celular não é exacta. Podem ligar-se os centroides de cada célula O algoritmo pode ir variando a largura das células de forma adaptativa Algoritmo seguro mas não completo (pode não encontrar a solução) Admitindo as células sempre livres o algoritmo é completo (propõe sempre uma solução) Mas não é seguro ( a “solução” pode não ser viável). 2003 Eugénio Oliveira Navegação do Robô Numa decomposição celular exacta, as células tem fronteiras que são os próprios Obstáculos. As células tem fronteiras curvas (células cilindricas) nos topos mas deve manter-se recta nos lados. A largura dos cilindros não é fixa. Encontram-se pontos críticos para ajudar a decomposição. Pontos críticos são aqueles cuja fronteira (do obstáculo) é vertical Fazendo varrer uma linha vertical pelo espaço, pontos críticos são aqueles onde essa linha se parte ou onde dois segmentos dela, antes partidos, se juntam de novo 2003 Eugénio Oliveira Navegação do Robô Decomposição cilindrica do espaço. Existem aqui 9 cilindros: 2003 Eugénio Oliveira Navegação do Robô O Algorítmo A* é um bom candidato para calcular o melhor caminho em um espaço de representação conhecida. Pode gerar-se também o Plano global e depois tentar ultrapassar localmente Obstáculos imprevistos. São algoritmos Completos mas gerando passos sub-óptimos Pode-se também replanear o Plano global sempre que, durante a execução nova Informação aparece que contradiz a anterior. Estes algoritmos de replaneamento podem ser custosos em tempo. A representação do espaço com “quadtrees” pode dar mais alguma eficiência pois representa melhor o espaço livre e os obstáculos. 2003 Eugénio Oliveira Algoritmo D* Seja um Robô com sensores e com um Mapa que pode ser incompleto ou impreciso. O Algorítmo D* (Dynamic A*) também faz pesquisa em grafo mas admite constante replaneamento à medida que nova informação vai chegando ao Robô. Os nodos do grafo são estados (localizações do Robô) ligados por arcos etiquetados com custos. Custos podem ser distâncias, tempo, riscos, gastos de energia... Tais custos podem ser reavaliados à medida que o robô vai progredindo no espaço. O algoritmo pode ser usado com grafos de visibilidade ou representação por grelhas D* produz caminhos óptimos em ambientes dinâmicos. Incorpora conhecimento do ambiente em tempo-real. Replaneia quando algo inesperado é detectado 2003 Eugénio Oliveira Algoritmo D* Cada estado (nó) X, excepto G, tem um apontador para um estado seguinte Y, b(X)=Y D* usa estes apontadores para representar o caminho para o Objectivo G. Os arcos tem um custo c(X,Y) (que pode estar indefinido). Existindo c(X,Y) ou c(Y,X) dois nós X e Y são considerados vizinhos. Como no A*, o D* mantém uma LISTA ABERTA (LA) de nós que vão ser analisados e que serve para propagar os custos. Os nós tem uma etiqueta t(X) t(X)=Novo se X nunca pertenceu à Lista Aberta t(X)= Aberto se X pertence à Lista Aberta t(X)= Fechado se X já não pertence à Lista Aberta Para cada nó X, D* mantém uma estimativa do custo de X até G h(G,X). 2003 Eugénio Oliveira Algoritmo D* Para cada nó X na Lista Aberta a função Chave k(G,X) guarda o mínimo dos custos estimados de X a G desde o inícial h(G,X) até ao presente. Os nós são classificados como: AUMENTADOS se k(G,X) < h(G,X) ou BAIXADOS se k(G,X) = h(G,X) D* usa os nós AUMENTADOS da Lista Aberta para propagar os aumentos no custo e os BAIXADOS para propagar as reduções de custo do caminho. Sempre que um Nó é retirado da Lista Aberta ele é expandido e os custos são propagados para os seus vizinhos os quais são colocados na Lista Aberta. Estados (nós) com etiqueta ABERTO, na Lista Aberta estão ordenados de acordo com os valores da função chave. 2003 Eugénio Oliveira Algoritmo D* Todos os passos com custo inferior ou igual a min(k(X)) são óptimos Kold = Kmin antes da mais recente extracção de um nó da LA D* guarda sequências {G,Xi} de nós correspondentes a passos monótonos (i de 1 a N): Se nós FECHADOS (t( Xi)=FECHADO) Então h(G,Xi) < h(G,Xi+1) Se nós ABERTOS (t(Xi)=ABERTO) Então k(G,Xi) < h(G,Xi+1) 2003 Eugénio Oliveira Algoritmo D* Simplificando f(X) =f(G,X) e {X} ={G,X} Algoritmo D* é basicamente constitudo por 2 funções: Processar_Estado: Computa o passo óptimo para o objectivo Modificar_Custos: altera os custos dos arcos e dá entrada aos nós afectados na Lista Aberta Inicialmente: todos os nós são etiquetados como NOVO, h(G)=0 G vai para a Lista Aberta A função Processar_Estado é chamada recursivamente até o nó X estar fora da Lista Aberta, i.e. t(X)=FECHADO ou retorna -1 (sequência X computada ou não existe) 2003 Eugénio Oliveira Algoritmo D* O robô segue os apontadores até: chegar ao Objectivo G ou encontrar erro no custo do Arco (obstáculo não previsto). A função Modifica_Custo é então chamada para: alterar o custo e colocar os nós (estados) afectados na Lista Aberta. Sendo Y o nó onde seja encontrado um erro na função de custo: Chamando Processa_Estado até: Kmin >= h(Y) as modificações no custo são propagadas ao estado Y tal que: h(Y)=o(Y) (mínimo Custo). Construiu-se assim a nova sequencia {Y} e o Robô continua a dirigir-se para o Objectivo 2003 Eugénio Oliveira Algoritmo D* Função: PROCESSA-ESTADO () L1 X =MIN STATE( ) {retorna nó da LA com menor K} L2 if X NULL then return -1 {NO-VAL} L3 kold =GET -KMIN () ; DELETE (X ) {retorna Kmin da LA ou -1 se vazia} {apaga X da LA e faz t(X)=CLOSED} L4 if kold < h (X ) then L5 for each neighbor Y of X: L6 if t(Y)=/= NEW and h(Y) =< Kold and h(X)>h(Y)+c(Y,X) then L7 b(X)=Y; h(X)=h(Y)+c(Y,X) L8 if Kold = h(X) then L9 for each neighbor Y of X: L10 if t(Y)=NEW or L11 ( b(Y)=X and h(Y)=/= h(X)+c(X,Y) ) or L12 ( b(Y) =/=X and h(Y) > h(X)+c(X,Y) ) then L13 b(Y) = X; I NSERT(Y, h(X)+c(X,Y) ) {Y passa a apontar para X} 2003 Eugénio Oliveira Algoritmo D* L14 else L15 for each Y neighbor of X : {Propagar mudanças de Custos para E NEW e descendentes imediatos tal como para E BAIXADOS} L16 if t(Y)=NEW or L17 (b(Y)=X and h(Y)=/=h(X)+c(X,Y)) then L18 b(Y) =X ; INSERT(Y,h(X) + c(X,Y) ); {Insert(X,hnew) Calcula k(X)=hnew se t(X)=NEW, k(X)=min(h(X), hnew) se t(X)=OPEN e k(X)=min(h(X),hnew) se t(X)=CLOSED. Ainda faz h(X)=hnew e t(X)=OPEN recolocando X na posição correcta da LA ordenada pelos k} L19 else {t(Y)=/=NEW estados não descendentes imediatos} L20 if b(Y)=/=X and h(Y)>h(X)+c(X,Y) and t(X)=CLOSED then L21 INSERT(X, h(X)) {na LA para posterior expansão} L22 else { passo de X pode ser reduzido por um vizinho, este vai para LA} L23 if b(Y)=/=X and h(X) > h(Y) + c(Y,X) and L24 t(Y)=CLOSED and h(Y) > Kold then L25 INSERT(Y, h(Y)) L26 return GET-KMIN {retorna Kmin da LA ou -1 se vazia} 2003 Eugénio Oliveira Algoritmo D* Na Função Modifica_Custos a função do custo do arco é alterada com o novo valor. Como alteração do custo de Y altera também o custo do caminho de X, X vai para a LA. Quando X é expandido com Processa_Estado, calcula um novo h(Y)=h(X)+c(X,Y) e coloca Y na LA. Expansões dos nós subsequentes propagam o custo para os descendentes de Y Função: MODIFICA_CUSTOS (X, Y, cval) L1 c ( X ,Y ) = cval L2 if t(X)= CLOSED then INSERT (X, h(X)) L3 return GET-KMIN( ) 2003 Eugénio Oliveira Algoritmo D* O papel dos estados: AUMENTADOS (k(X)<h(X) ) ou BAIXADOS (k(X) = h(X) ) é essencial no algoritmo. Estados AUMENTADOS propagam aumentos de custos e BAIXADOS propagam redução de custos. Quando o custo de um arco é aumentado, o estado vizinho afectado vai para a LA e o custo propagado via estados AUMENTADOS em todas as sequencias de estados contendo o arco. Quando os estados AUMENTADOS ficam em contacto com Nós vizinhos de custo inferior, estes estados BAIXADOS vão para a LA e fazem diminuir os custos dos estados anteriormente aumentados. Se o custo de atravessar um arco decresce, a redução é propagada via nós BAIXADOS através das sequências contendo o arco e dos estados vizinhos que podem ser decrementados. 2003 Eugénio Oliveira Algoritmo D* Função MOVE_ROBOT(S,G) L1 for each state X in the Graph {Nós colocados na LA e h(G)=0;G na LA} L2 t(X)=NEW L3 INSERT(G,O) L4 L5 L6 val=0 while t(S)=/=CLOSED and val=/=NO_VAL {computar o caminho inicial ou não existe caminho} val=PROCESS_STATE( ) L7 L8 L9 L10 L11 L12 L13 L14 L15 if t(S)=NEW then return NO_PATH {nenhum arco para o G} R=S {segue os apontadores até G ou descobre discrepância, L10 L11} while R=/=G for each (X,Y) such that s(X,Y)=/=c(X,Y) {c(X,Y) custo anterior} val=MODIFY_COST(X,Y,s(X,Y) ) {s medido por sensor} while LESS(val,COST(R) ) and val=/=NO_VAL {até val>=h(R)} val=PROCESS_STATE( ) R=b(R) return GOAL_REACHED {G atingido ou NO_PATH} 2003 Eugénio Oliveira Algoritmo D* Existe uma melhoria ao algoritmo D* : Algoritmo D* Focalizado. Referências para estes algoritmos com exemplos de aplicação: • “Optimal and Efficient Path Planning for Partially-Known Environments” Anthony Stentz The Robotics Institute; Carnegie Mellon University; Pittsburgh • “The D* Algorithm for Real-Time Planning of Optimal Traverses” Anthony Stenz CMU-RI-TR-94-37 The Robotics Institute; Carnegie Mellon University; Pittsburgh 2003 Eugénio Oliveira Navegação do Robô B-Esqueletização: Em vez de decompôr em células esqueletiza o espaço numa linha que será o possível trajecto nesse espaço. A descrição do espaço livre é minimalista. - Se S é um esqueleto do espaço livre E, então S deve ser uma única linha em cada região conectada de E - para cada ponto p de E deve ser fácil computar um caminho para o esqueleto Exemplos de Métodos de esqueletização no espaço 2D: B.1 Grafo de Visibilidade B.2 Diagramas de Voronoi (B.3 Roteiros) 2003 Eugénio Oliveira Navegação do Robô B-Esqueletização: B.1 Grafo de Visibilidade Para uma configuração poligonal do espaço, o Grafo de Visibilidade consiste em arcos ligando todos os pares de vértices que se podem ver um ao outro. Existe portanto um segmento de recta entre eles que não intersecta qualquer obstáculo. 2003 Eugénio Oliveira Navegação do Robô B-Esqueletização: B.2 Diagramas de Voronoi Para cada ponto do espaço livre calcula-se a distância para o obstáculo mais próximo Essa distância é vista como uma função “altitude” que tem o valor zero junto dos obstáculos (zero também nas margens). O “terreno” passa a ter a sua curva de nível mais elevada (a única desenhada) passando pelos pontos equidistantes dos obstáculos. O algoritmo é completo: Havendo um passo em E implica a existência do diagrama de Voronoi. No entanto esse trajecto não é, normalmente, o passo mais curto. 2003 Eugénio Oliveira Navegação do Robô B-Esqueletização: B.2 Diagramas de Voronoi 2003 Eugénio Oliveira Navegação do Robô C- Navegação baseada em Marcos: Aqui a navegação depende das percepções recebidas através de Sensores. O Ambiente contém marcos modelados como pontos com um “campo de influência” circular. Dentro de cada “campo de influência” o robô pode conhecer a sua exacta posição. (podem sêr código de barras lidos pelo robô). O robô pode estimar distancia e ângulo para o marco. Embora os marcos no espaço sejam conhecidos em tempo de planeamento, a posição do robô só é conhecida em tempo de execução. 2003 Eugénio Oliveira Navegação do Robô C- Navegação baseada em Marcos: O planeamento do trajecto é feito em encadeamento inverso a partir do objectivo Faz-se a retro-projecção do “campo de influência” do objectivo em relação ao comando de velocidade V. Isto quer dizer que se o robô inicia o seu deslocamento em qualquer ponto do cone de retro-projecção e aplica o comando de velocidade V1 ele atinge o Objectivo. Se esse cone intersecta o campo de influência de outro marco, uma vez nesse campo o Robô pode navegar para a sua intersecção com o cone. É claro que deve pesquisar várias possibilidades para comandos Velocidade CVi tais que os cones de retro-projecção intersectem outros os outros campos de influência circulares. 2003 Eugénio Oliveira Navegação do Robô C- Navegação baseada em Marcos: Retro-projecção do objectivo com respeito a Vi CV2 CV1 1ª operação 2003 Eugénio Oliveira