Estrutura de dados do vizinho mais próximo para espaço de configuração não euclidiano


15

Estou tentando implementar uma estrutura de vizinho mais próximo para uso em um planejador de movimento RRT. Para fazer melhor do que uma pesquisa linear por força bruta do vizinho mais próximo, gostaria de implementar algo como uma árvore kd. No entanto, parece que a implementação clássica da árvore kd pressupõe que cada dimensão do espaço possa ser dividida em "esquerda" e "direita". Essa noção não parece se aplicar a espaços não euclidianos como SO (2), por exemplo.

Estou trabalhando com um braço manipulador serial com links totalmente rotacionais, o que significa que cada dimensão do espaço de configuração do robô é SO (2) e, portanto, não euclidiana. O algoritmo kd-tree pode ser modificado para lidar com esses tipos de subespaços? Caso contrário, existe outra estrutura de vizinho mais próximo que possa lidar com esses subespaços não euclidianos e ainda assim fácil de atualizar e consultar? Também dei uma olhada na FLANN , mas na documentação deles não estava claro se eles podem lidar com subespaços não euclidianos.


By the way, aproximados-vizinhos mais próximos é muito fina (mesmo preferido, se a aceleração é considerável)
giogadi

1
Embora você tenha aceitado uma excelente resposta, geralmente é uma boa idéia aguardar alguns dias antes de aceitar uma resposta para não desencorajar outras respostas que possam fornecer outras opções.
Mark Booth

Obrigado Mark, eu estava realmente incerto sobre quanto tempo esperar antes de aceitar a resposta.
giogadi

Respostas:


6

Você está certo de que os kd-trees geralmente funcionam apenas em pequenos espaços métricos euclidianos. Porém, há muito trabalho para aplicações vizinhas gerais mais próximas em espaços métricos (em qualquer lugar em que você possa definir essencialmente uma função de distância).

O trabalho clássico é sobre árvores de bola , que foram generalizadas em árvores métricas .

Há algum trabalho mais novo chamado árvores de cobertura que ainda possui código GPL. Eu queria analisar as características de desempenho entre essas árvores e kd-trees há mais de dois anos.

Felizmente, isso se adapta à sua aplicação.


Desculpe inaceitar; basta seguir o conselho de outro comentarista para dar a essa pergunta mais alguns dias para "guisado". Eu realmente achei sua resposta útil!
giogadi

Booo. Só brincando. Estou feliz que você tenha achado isso útil.
22612 Chris Mansley

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.