Skip to content

IDM Path

IDMPath dataclass

Path for IDM planner

Source code in commonroad_idm_planner/idm_path.py
 9
10
11
12
13
14
15
16
17
18
19
@dataclass
class IDMPath:
    """
    Path for IDM planner
    """

    reference_path: np.ndarray
    interpoint_distances: np.ndarray
    path_length_per_point: np.ndarray
    path_orientation: np.ndarray
    path_curvature: np.ndarray

IDMPathFactory

Factory for idm paths

Source code in commonroad_idm_planner/idm_path.py
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
class IDMPathFactory:
    """
    Factory for idm paths
    """

    @staticmethod
    def generate_idm_path_from_cr_route_planner_reference_path(
        cr_reference_path: ReferencePath,
    ) -> IDMPath:
        """
        Generates idm idm_path from cr route planner reference idm_path
        :param cr_reference_path: cr route planner reference idm_path
        :return: idm idm_path object
        """
        return IDMPath(
            reference_path=cr_reference_path.reference_path,
            interpoint_distances=cr_reference_path.interpoint_distances,
            path_length_per_point=cr_reference_path.path_length_per_point,
            path_orientation=cr_reference_path.path_orientation,
            path_curvature=cr_reference_path.path_curvature,
        )

    @staticmethod
    def generate_idm_path_from_np_2d_positional_array(
        positional_array: np.ndarray,
    ) -> IDMPath:
        """
        Generate idm idm_path from (n,2) np.ndarray as 2d positions in cartesian coordinates
        :param positional_array: (n,2) np.ndarray as 2d positions in cartesian coordinates
        :return: IDM Path
        """
        interpoint_distances: np.ndarray = (
            pops.compute_interpoint_distances_from_polyline(polyline=positional_array)
        )
        path_length_per_point: np.ndarray = pops.compute_path_length_per_point(
            polyline=positional_array
        )
        path_orientation: np.ndarray = pops.compute_orientation_from_polyline(
            polyline=positional_array
        )
        path_curvature: np.ndarray = pops.compute_scalar_curvature_from_polyline(
            polyline=positional_array
        )

        return IDMPath(
            reference_path=positional_array,
            interpoint_distances=interpoint_distances,
            path_length_per_point=path_length_per_point,
            path_orientation=path_orientation,
            path_curvature=path_curvature,
        )

    @staticmethod
    def generate_idm_path_from_custom_inputs(
        positional_array: np.ndarray,
        interpoint_distances: np.ndarray,
        path_length_per_point: np.ndarray,
        path_orientation: np.ndarray,
        path_curvature: np.ndarray,
    ) -> IDMPath:
        """
        Generate idm idm_path from custom inputs. Warning: The custom inputs are not checked for validity
        :param positional_array: (n,2) np.ndarray positional array in 2d cartesian coordinates
        :param interpoint_distances: (n,) np.ndarray distances between points
        :param path_length_per_point: (n,) np.ndarray of arc length per point
        :param path_orientation: (n,) np.ndarray of orientation per point
        :param path_curvature: (n,) np.ndarray of curvature per point
        :return: idm idm_path object
        """
        return IDMPath(
            reference_path=positional_array,
            interpoint_distances=interpoint_distances,
            path_length_per_point=path_length_per_point,
            path_orientation=path_orientation,
            path_curvature=path_curvature,
        )

generate_idm_path_from_cr_route_planner_reference_path(cr_reference_path) staticmethod

Generates idm idm_path from cr route planner reference idm_path

Parameters:

Name Type Description Default
cr_reference_path ReferencePath

cr route planner reference idm_path

required

Returns:

Type Description
IDMPath

idm idm_path object

Source code in commonroad_idm_planner/idm_path.py
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
@staticmethod
def generate_idm_path_from_cr_route_planner_reference_path(
    cr_reference_path: ReferencePath,
) -> IDMPath:
    """
    Generates idm idm_path from cr route planner reference idm_path
    :param cr_reference_path: cr route planner reference idm_path
    :return: idm idm_path object
    """
    return IDMPath(
        reference_path=cr_reference_path.reference_path,
        interpoint_distances=cr_reference_path.interpoint_distances,
        path_length_per_point=cr_reference_path.path_length_per_point,
        path_orientation=cr_reference_path.path_orientation,
        path_curvature=cr_reference_path.path_curvature,
    )

generate_idm_path_from_custom_inputs(positional_array, interpoint_distances, path_length_per_point, path_orientation, path_curvature) staticmethod

Generate idm idm_path from custom inputs. Warning: The custom inputs are not checked for validity

Parameters:

Name Type Description Default
positional_array ndarray

(n,2) np.ndarray positional array in 2d cartesian coordinates

required
interpoint_distances ndarray

(n,) np.ndarray distances between points

required
path_length_per_point ndarray

(n,) np.ndarray of arc length per point

required
path_orientation ndarray

(n,) np.ndarray of orientation per point

required
path_curvature ndarray

(n,) np.ndarray of curvature per point

required

Returns:

Type Description
IDMPath

idm idm_path object

Source code in commonroad_idm_planner/idm_path.py
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
@staticmethod
def generate_idm_path_from_custom_inputs(
    positional_array: np.ndarray,
    interpoint_distances: np.ndarray,
    path_length_per_point: np.ndarray,
    path_orientation: np.ndarray,
    path_curvature: np.ndarray,
) -> IDMPath:
    """
    Generate idm idm_path from custom inputs. Warning: The custom inputs are not checked for validity
    :param positional_array: (n,2) np.ndarray positional array in 2d cartesian coordinates
    :param interpoint_distances: (n,) np.ndarray distances between points
    :param path_length_per_point: (n,) np.ndarray of arc length per point
    :param path_orientation: (n,) np.ndarray of orientation per point
    :param path_curvature: (n,) np.ndarray of curvature per point
    :return: idm idm_path object
    """
    return IDMPath(
        reference_path=positional_array,
        interpoint_distances=interpoint_distances,
        path_length_per_point=path_length_per_point,
        path_orientation=path_orientation,
        path_curvature=path_curvature,
    )

generate_idm_path_from_np_2d_positional_array(positional_array) staticmethod

Generate idm idm_path from (n,2) np.ndarray as 2d positions in cartesian coordinates

Parameters:

Name Type Description Default
positional_array ndarray

(n,2) np.ndarray as 2d positions in cartesian coordinates

required

Returns:

Type Description
IDMPath

IDM Path

Source code in commonroad_idm_planner/idm_path.py
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
@staticmethod
def generate_idm_path_from_np_2d_positional_array(
    positional_array: np.ndarray,
) -> IDMPath:
    """
    Generate idm idm_path from (n,2) np.ndarray as 2d positions in cartesian coordinates
    :param positional_array: (n,2) np.ndarray as 2d positions in cartesian coordinates
    :return: IDM Path
    """
    interpoint_distances: np.ndarray = (
        pops.compute_interpoint_distances_from_polyline(polyline=positional_array)
    )
    path_length_per_point: np.ndarray = pops.compute_path_length_per_point(
        polyline=positional_array
    )
    path_orientation: np.ndarray = pops.compute_orientation_from_polyline(
        polyline=positional_array
    )
    path_curvature: np.ndarray = pops.compute_scalar_curvature_from_polyline(
        polyline=positional_array
    )

    return IDMPath(
        reference_path=positional_array,
        interpoint_distances=interpoint_distances,
        path_length_per_point=path_length_per_point,
        path_orientation=path_orientation,
        path_curvature=path_curvature,
    )