Estoy tratando de implementar una estructura de vecino más cercano para usar en un planificador de movimiento RRT. Para hacerlo mejor que una búsqueda lineal de fuerza bruta más cercana al vecino, me gustaría implementar algo como un árbol kd. Sin embargo, parece que la implementación clásica del árbol kd supone que cada dimensión del espacio se puede dividir en "izquierda" y "derecha". Esta noción no parece aplicarse a espacios no euclidianos como SO (2), por ejemplo.
Estoy trabajando con un brazo manipulador en serie con enlaces totalmente rotativos, lo que significa que cada dimensión del espacio de configuración del robot es SO (2) y, por lo tanto, no euclidiana. ¿Se puede modificar el algoritmo kd-tree para manejar este tipo de subespacios? Si no es así, ¿hay otra estructura de vecino más cercano que pueda manejar estos subespacios no euclidianos sin dejar de ser fácil de actualizar y consultar? También eché un vistazo a FLANN , pero de su documentación no estaba claro si pueden manejar subespacios no euclidianos.