Ich versuche, eine Nearest-Neighbour-Struktur für die Verwendung in einem RRT-Bewegungsplaner zu implementieren. Um das besser zu machen als eine lineare Brute-Force-Suche nach nächsten Nachbarn, möchte ich so etwas wie einen kd-Baum implementieren. Es scheint jedoch, dass die klassische Implementierung des kd-Baums davon ausgeht, dass jede Dimension des Raums in "links" und "rechts" unterteilt werden kann. Dieser Begriff scheint nicht auf nichteuklidische Räume wie SO (2) zuzutreffen.
Ich arbeite mit einem seriellen Manipulatorarm mit vollständig rotierenden Verbindungen, was bedeutet, dass jede Dimension des Konfigurationsraums des Roboters SO (2) und daher nicht-euklidisch ist. Kann der kd-tree-Algorithmus geändert werden, um diese Art von Subspaces zu verarbeiten? Wenn nicht, gibt es eine andere Nearest-Neighbour-Struktur, die diese nicht-euklidischen Unterbereiche handhaben kann und dennoch einfach zu aktualisieren und abzufragen ist? Ich habe mir auch FLANN angeschaut , aber aus ihrer Dokumentation war mir nicht klar, ob sie mit nicht-euklidischen Teilräumen umgehen können.