ExactSingleDisc

class discopygal.solvers.exact.exact_single.ExactSingle(eps, bounding_margin_width_factor=0)

Bases: Solver

Exact solution by vertical decomposition for a SINGLE disc/polygon robot. Multiple robot motion planning is not supported. Also any other type besides disc or polygon robot is unsupported

Parameters:

eps (float) – epsilon for approximated offset

connectivity_graph(arr)

Get the connectivity graph from a vertical decomposition arrangement

construct_cspace()

Get the (CGAL Polygonal) obstacles and the radius of the robot, and construct the expanded CSPACE arrangement (also with bounding box walls)

find_face_index(arr, p, pl)

Get a point and find the index of the face in the arrangement that has it

find_valid_path(g_path, source, target, edge_dict, collision_detector)

Convert a graph path to a valid motion planning path. We do that by connecting midpoints of edges we pass - and since the arrangement has circle curves, we might need split some edges in half (for exact motion).

classmethod 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_arrangement()

Return an arrangement (if applicable). Can be overridded by solvers.

Returns:

arrangement

Return type:

Arrangement_2

to_ker_point_2(point: Point_2)

Convert TPoint() to Ker.Point_2()

vertical_decomposition(arr)

Take an arrangement and add edges to it that represent the vertical decomposition