Skip to content

IDM Config

IDMConfig dataclass

IDM config

Source code in commonroad_idm_planner/configuration/planner_config.py
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
@dataclass
class IDMConfig:
    """
    IDM config
    """

    v_desired: float
    safe_time_headway: float
    maximum_acceleration: float
    desired_deceleration: float
    acceleration_exponent: float
    jam_distance_zero: float
    jam_distance_one: float
    vehicle_length: float
    vehicle_width: float
    planning_horizon: int
    ignore_static_obstacles: bool = True

IDMConfigFactory

IDM Config Factory

Source code in commonroad_idm_planner/configuration/planner_config.py
 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
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
class IDMConfigFactory:
    """
    IDM Config Factory
    """

    @staticmethod
    def generate_default_config(ignore_static_obstacles: bool = True) -> IDMConfig:
        """
        Generates IDM Config with default value from original paper.
        Treiber, Martin; Hennecke, Ansgar; Helbing, Dirk (2000),
        "Congested traffic states in empirical observations and microscopic simulations",
        Physical Review E, 62 (2): 1805–1824

        :param ignore_static_obstacles: drives through static obstacles if set to true
        :return: IDM Config
        """
        return IDMConfig(
            v_desired=30,
            safe_time_headway=1.6,
            maximum_acceleration=0.73,
            desired_deceleration=1.67,
            acceleration_exponent=4,
            jam_distance_zero=2,
            jam_distance_one=0,
            vehicle_length=5,
            vehicle_width=1.8,
            planning_horizon=10,
            ignore_static_obstacles=ignore_static_obstacles,
        )

    @staticmethod
    def generate_custom_config(
        v_desired: float,
        safe_time_headway: float,
        maximum_acceleration: float,
        desired_deceleration: float,
        acceleration_exponent: float,
        jam_distance_zero: float,
        jam_distance_one: float,
        vehicle_length: float,
        vehicle_width: float,
        planning_horizon: int,
        ignore_static_obstacles: bool,
    ) -> IDMConfig:
        """
        Generates custom IDM config
        :param v_desired: maximum desired speed
        :param safe_time_headway: time headway to leading vehicle
        :param maximum_acceleration: maximum desired acceleration
        :param desired_deceleration: maximum POSITIVE desired decelaration
        :param acceleration_exponent: acceleration exponent
        :param jam_distance_zero: s_0 in paper
        :param jam_distance_one: s_1 in paper
        :param vehicle_length: length of ego vehicle
        :param vehicle_width: width of ego vehicle
        :param planning_horizon: planning horizon in time steps
        :param ignore_static_obstacles: if True, IDM just drives through static obstacles, otherwise brakes
        :return: IDM Config
        """
        return IDMConfig(
            v_desired=v_desired,
            safe_time_headway=safe_time_headway,
            maximum_acceleration=maximum_acceleration,
            desired_deceleration=desired_deceleration,
            acceleration_exponent=acceleration_exponent,
            jam_distance_zero=jam_distance_zero,
            jam_distance_one=jam_distance_one,
            vehicle_length=vehicle_length,
            vehicle_width=vehicle_width,
            planning_horizon=planning_horizon,
            ignore_static_obstacles=ignore_static_obstacles,
        )

    @staticmethod
    def generate_custom_config_symbols(
        v_0: float,
        T: float,
        a: float,
        b: float,
        delta: float,
        s0: float,
        s1: float,
        l: float,
        w: float,
        planning_horizon: int,
        ignore_static_obstacles: bool,
    ) -> IDMConfig:
        """
        Generates custom IDM config
        :param v_0: maximum desired speed
        :param T: time headway to leading vehicle
        :param a: maximum desired acceleration
        :param b: maximum POSITIVE desired decelaration
        :param delta: acceleration exponent
        :param s0: jam distance zero
        :param s1: jam distance one
        :param l: vehicle length
        :param w: vehicle width
        :param planning_horizon: planning horizon in time steps
        :param ignore_static_obstacles: if True, IDM just drives through static obstacles, otherwise brakes
        :return: IDM config
        """
        return IDMConfig(
            v_desired=v_0,
            safe_time_headway=T,
            maximum_acceleration=a,
            desired_deceleration=b,
            acceleration_exponent=delta,
            jam_distance_zero=s0,
            jam_distance_one=s1,
            vehicle_length=l,
            vehicle_width=w,
            planning_horizon=planning_horizon,
            ignore_static_obstacles=ignore_static_obstacles,
        )

generate_custom_config(v_desired, safe_time_headway, maximum_acceleration, desired_deceleration, acceleration_exponent, jam_distance_zero, jam_distance_one, vehicle_length, vehicle_width, planning_horizon, ignore_static_obstacles) staticmethod

Generates custom IDM config

Parameters:

Name Type Description Default
v_desired float

maximum desired speed

required
safe_time_headway float

time headway to leading vehicle

required
maximum_acceleration float

maximum desired acceleration

required
desired_deceleration float

maximum POSITIVE desired decelaration

required
acceleration_exponent float

acceleration exponent

required
jam_distance_zero float

s_0 in paper

required
jam_distance_one float

s_1 in paper

required
vehicle_length float

length of ego vehicle

required
vehicle_width float

width of ego vehicle

required
planning_horizon int

planning horizon in time steps

required
ignore_static_obstacles bool

if True, IDM just drives through static obstacles, otherwise brakes

required

Returns:

Type Description
IDMConfig

IDM Config

Source code in commonroad_idm_planner/configuration/planner_config.py
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
@staticmethod
def generate_custom_config(
    v_desired: float,
    safe_time_headway: float,
    maximum_acceleration: float,
    desired_deceleration: float,
    acceleration_exponent: float,
    jam_distance_zero: float,
    jam_distance_one: float,
    vehicle_length: float,
    vehicle_width: float,
    planning_horizon: int,
    ignore_static_obstacles: bool,
) -> IDMConfig:
    """
    Generates custom IDM config
    :param v_desired: maximum desired speed
    :param safe_time_headway: time headway to leading vehicle
    :param maximum_acceleration: maximum desired acceleration
    :param desired_deceleration: maximum POSITIVE desired decelaration
    :param acceleration_exponent: acceleration exponent
    :param jam_distance_zero: s_0 in paper
    :param jam_distance_one: s_1 in paper
    :param vehicle_length: length of ego vehicle
    :param vehicle_width: width of ego vehicle
    :param planning_horizon: planning horizon in time steps
    :param ignore_static_obstacles: if True, IDM just drives through static obstacles, otherwise brakes
    :return: IDM Config
    """
    return IDMConfig(
        v_desired=v_desired,
        safe_time_headway=safe_time_headway,
        maximum_acceleration=maximum_acceleration,
        desired_deceleration=desired_deceleration,
        acceleration_exponent=acceleration_exponent,
        jam_distance_zero=jam_distance_zero,
        jam_distance_one=jam_distance_one,
        vehicle_length=vehicle_length,
        vehicle_width=vehicle_width,
        planning_horizon=planning_horizon,
        ignore_static_obstacles=ignore_static_obstacles,
    )

generate_custom_config_symbols(v_0, T, a, b, delta, s0, s1, l, w, planning_horizon, ignore_static_obstacles) staticmethod

Generates custom IDM config

Parameters:

Name Type Description Default
v_0 float

maximum desired speed

required
T float

time headway to leading vehicle

required
a float

maximum desired acceleration

required
b float

maximum POSITIVE desired decelaration

required
delta float

acceleration exponent

required
s0 float

jam distance zero

required
s1 float

jam distance one

required
l float

vehicle length

required
w float

vehicle width

required
planning_horizon int

planning horizon in time steps

required
ignore_static_obstacles bool

if True, IDM just drives through static obstacles, otherwise brakes

required

Returns:

Type Description
IDMConfig

IDM config

Source code in commonroad_idm_planner/configuration/planner_config.py
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
@staticmethod
def generate_custom_config_symbols(
    v_0: float,
    T: float,
    a: float,
    b: float,
    delta: float,
    s0: float,
    s1: float,
    l: float,
    w: float,
    planning_horizon: int,
    ignore_static_obstacles: bool,
) -> IDMConfig:
    """
    Generates custom IDM config
    :param v_0: maximum desired speed
    :param T: time headway to leading vehicle
    :param a: maximum desired acceleration
    :param b: maximum POSITIVE desired decelaration
    :param delta: acceleration exponent
    :param s0: jam distance zero
    :param s1: jam distance one
    :param l: vehicle length
    :param w: vehicle width
    :param planning_horizon: planning horizon in time steps
    :param ignore_static_obstacles: if True, IDM just drives through static obstacles, otherwise brakes
    :return: IDM config
    """
    return IDMConfig(
        v_desired=v_0,
        safe_time_headway=T,
        maximum_acceleration=a,
        desired_deceleration=b,
        acceleration_exponent=delta,
        jam_distance_zero=s0,
        jam_distance_one=s1,
        vehicle_length=l,
        vehicle_width=w,
        planning_horizon=planning_horizon,
        ignore_static_obstacles=ignore_static_obstacles,
    )

generate_default_config(ignore_static_obstacles=True) staticmethod

Generates IDM Config with default value from original paper. Treiber, Martin; Hennecke, Ansgar; Helbing, Dirk (2000), "Congested traffic states in empirical observations and microscopic simulations", Physical Review E, 62 (2): 1805–1824

Parameters:

Name Type Description Default
ignore_static_obstacles bool

drives through static obstacles if set to true

True

Returns:

Type Description
IDMConfig

IDM Config

Source code in commonroad_idm_planner/configuration/planner_config.py
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
@staticmethod
def generate_default_config(ignore_static_obstacles: bool = True) -> IDMConfig:
    """
    Generates IDM Config with default value from original paper.
    Treiber, Martin; Hennecke, Ansgar; Helbing, Dirk (2000),
    "Congested traffic states in empirical observations and microscopic simulations",
    Physical Review E, 62 (2): 1805–1824

    :param ignore_static_obstacles: drives through static obstacles if set to true
    :return: IDM Config
    """
    return IDMConfig(
        v_desired=30,
        safe_time_headway=1.6,
        maximum_acceleration=0.73,
        desired_deceleration=1.67,
        acceleration_exponent=4,
        jam_distance_zero=2,
        jam_distance_one=0,
        vehicle_length=5,
        vehicle_width=1.8,
        planning_horizon=10,
        ignore_static_obstacles=ignore_static_obstacles,
    )