PRM

class discopygal.solvers.prm.prm.PRM(num_landmarks, k, 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 sample

  • k (int) – number of nearest neighbors to connect

  • nearest_neighbors (NearestNeighbors or None) – a nearest neighbors algorithm. if None then use sklearn implementation

  • metric (Metric or None) – a metric for weighing edges, can be different then the nearest_neighbors metric! If None then use euclidean metric

  • sampler (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 or None

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:

PathCollection