PRM
- class discopygal.solvers.prm.prm.PRM(num_landmarks, k, bounding_margin_width_factor=2, nearest_neighbors=None, metric=None, sampler=None)
Bases:
Solver
The basic implementation of a Probabilistic Road Map (PRM) solver. Supports multi-robot motion planning, though might be inefficient for more than two-three robots.
- Parameters:
num_landmarks (
int
) – number of landmarks to samplek (
int
) – number of nearest neighbors to connectnearest_neighbors (
NearestNeighbors
orNone
) – a nearest neighbors algorithm. if None then use sklearn implementationmetric (
Metric
orNone
) – a metric for weighing edges, can be different then the nearest_neighbors metric! If None then use euclidean metricsampler (
Sampler
) – sampling algorithm/method. if None then use uniform sampling
- collision_free(p, q)
Get two points in the configuration space and decide if they can be connected
- static from_arguments(d)
Get a dictionary of arguments and return a solver. Should be overridded by solvers.
- Parameters:
d (
dict
) – arguments dict
- static get_arguments()
Return a list of arguments and their description, defaults and types. Can be used by a GUI to generate fields dynamically. Should be overridded by solvers.
- Returns:
arguments dict
- Return type:
dict
- get_graph()
Return a graph (if applicable). Can be overridded by solvers.
- Returns:
graph whose vertices are Point_2 or Point_d
- Return type:
networkx.Graph
orNone
- load_scene(scene: Scene)
Load a scene into the solver. Also build the roadmap.
- Parameters:
scene (
Scene
) – scene to load
- sample_free()
Sample a free random point
- solve()
Based on the start and end locations of each robot, solve the scene (i.e. return paths for all the robots)
- Returns:
path collection of motion planning
- Return type: