- Efficient and relatively accurate NN datastructure (pynndescent?)
- An alternate way to represent the roadmap grap (networkit?)
- An efficient implementation of a graph search algorithm. (networkit?)
- A way to check the validity of edges given our current representation of the hypercube environment. (Done!)
- Similar interface to OMPL... except we only care about real vector spaces with the default Euclidean metric
- Can consume a sampler, a motion validity checker, and then can do queries on its own.
- Should be compatible with a (slow) exact nearest-neighbor library and a (faster) ANN library (like FLANN)
- But we're not multithreading! For reasons related to Python + SuperCloud does not like applications internally multithreading anyway.
- We are implementing simple PRM ONLY, so we are not including the random bouncing motions.
- all content for this is in growRoadmap(), which is sample n points and add them as milestones.
- Interested in ConnectionStrategy (neighbor lookup) add nn->add() (adding to NN)
- Adding to the NN lookup: they add if there is room in the index. But if there isn't, then
- rebuild the index. For our purposes, it may be better to just do everything once we're done sampling.
- Interested in ConnectionStrategy (neighbor lookup) add nn->add() (adding to NN)
- we'll start with an explicit representation... if it's feasible with ann.
- all content for this is in growRoadmap(), which is sample n points and add them as milestones.
- Glancing at LazyPRM (OMPL)... it's the same, without checking edge validity up front.
- Our implementation of sPRM:
- Building roadmaps:
- Samples all points up front.
- Construct index (and pass in old matrix to help).
- Grow the networkit graph (using implemented motion validity checker).
- Handling motion-planning queries:
- Do the NN lookup to see if the start and goal are in the graph
- Connect start and goal to graph.
- Run A star
- Delete the start and goal from the graph.
- Building roadmaps: