|
17 | 17 | import copy |
18 | 18 | import math |
19 | 19 | import cubic_spline_planner |
| 20 | +import sys |
| 21 | +import os |
| 22 | + |
| 23 | +sys.path.append(os.path.dirname(os.path.abspath(__file__)) + |
| 24 | + "/../QuinticPolynomialsPlanner/") |
| 25 | + |
| 26 | +try: |
| 27 | + from quintic_polynomials_planner import QuinticPolynomial |
| 28 | +except ImportError: |
| 29 | + raise |
| 30 | + |
20 | 31 |
|
21 | 32 | SIM_LOOP = 500 |
22 | 33 |
|
|
44 | 55 | show_animation = True |
45 | 56 |
|
46 | 57 |
|
47 | | -class quintic_polynomial: |
48 | | - |
49 | | - def __init__(self, xs, vxs, axs, xe, vxe, axe, T): |
50 | | - |
51 | | - # calc coefficient of quintic polynomial |
52 | | - self.a0 = xs |
53 | | - self.a1 = vxs |
54 | | - self.a2 = axs / 2.0 |
55 | | - |
56 | | - A = np.array([[T**3, T**4, T**5], |
57 | | - [3 * T ** 2, 4 * T ** 3, 5 * T ** 4], |
58 | | - [6 * T, 12 * T ** 2, 20 * T ** 3]]) |
59 | | - b = np.array([xe - self.a0 - self.a1 * T - self.a2 * T**2, |
60 | | - vxe - self.a1 - 2 * self.a2 * T, |
61 | | - axe - 2 * self.a2]) |
62 | | - x = np.linalg.solve(A, b) |
63 | | - |
64 | | - self.a3 = x[0] |
65 | | - self.a4 = x[1] |
66 | | - self.a5 = x[2] |
67 | | - |
68 | | - def calc_point(self, t): |
69 | | - xt = self.a0 + self.a1 * t + self.a2 * t**2 + \ |
70 | | - self.a3 * t**3 + self.a4 * t**4 + self.a5 * t**5 |
71 | | - |
72 | | - return xt |
73 | | - |
74 | | - def calc_first_derivative(self, t): |
75 | | - xt = self.a1 + 2 * self.a2 * t + \ |
76 | | - 3 * self.a3 * t**2 + 4 * self.a4 * t**3 + 5 * self.a5 * t**4 |
77 | | - |
78 | | - return xt |
79 | | - |
80 | | - def calc_second_derivative(self, t): |
81 | | - xt = 2 * self.a2 + 6 * self.a3 * t + 12 * self.a4 * t**2 + 20 * self.a5 * t**3 |
82 | | - |
83 | | - return xt |
84 | | - |
85 | | - def calc_third_derivative(self, t): |
86 | | - xt = 6 * self.a3 + 24 * self.a4 * t + 60 * self.a5 * t**2 |
87 | | - |
88 | | - return xt |
89 | | - |
90 | | - |
91 | 58 | class quartic_polynomial: |
92 | 59 |
|
93 | 60 | def __init__(self, xs, vxs, axs, vxe, axe, T): |
@@ -164,7 +131,8 @@ def calc_frenet_paths(c_speed, c_d, c_d_d, c_d_dd, s0): |
164 | 131 | for Ti in np.arange(MINT, MAXT, DT): |
165 | 132 | fp = Frenet_path() |
166 | 133 |
|
167 | | - lat_qp = quintic_polynomial(c_d, c_d_d, c_d_dd, di, 0.0, 0.0, Ti) |
| 134 | + # lat_qp = quintic_polynomial(c_d, c_d_d, c_d_dd, di, 0.0, 0.0, Ti) |
| 135 | + lat_qp = QuinticPolynomial(c_d, c_d_d, c_d_dd, di, 0.0, 0.0, Ti) |
168 | 136 |
|
169 | 137 | fp.t = [t for t in np.arange(0.0, Ti, DT)] |
170 | 138 | fp.d = [lat_qp.calc_point(t) for t in fp.t] |
|
0 commit comments