Métodos de Navegação em Robótica

Propaganda
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
Download