Skip to content

Commit bcb2c86

Browse files
authored
Fix the start state to use the current accel in frent planner(AtsushiSakai#755) (AtsushiSakai#756)
The robot didn't reach the target velocity when running frenet_optimal_trajectory.py. To fix this, I changed the constraints for determining polynomials that generate longitudinal trajectories. Expressly, I set the initial acceleration to the current acceleration.
1 parent 8f14488 commit bcb2c86

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

PathPlanning/FrenetOptimalTrajectory/frenet_optimal_trajectory.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ def __init__(self):
116116
self.c = []
117117

118118

119-
def calc_frenet_paths(c_speed, c_d, c_d_d, c_d_dd, s0):
119+
def calc_frenet_paths(c_speed, c_accel, c_d, c_d_d, c_d_dd, s0):
120120
frenet_paths = []
121121

122122
# generate path to each offset goal
@@ -139,7 +139,7 @@ def calc_frenet_paths(c_speed, c_d, c_d_d, c_d_dd, s0):
139139
for tv in np.arange(TARGET_SPEED - D_T_S * N_S_SAMPLE,
140140
TARGET_SPEED + D_T_S * N_S_SAMPLE, D_T_S):
141141
tfp = copy.deepcopy(fp)
142-
lon_qp = QuarticPolynomial(s0, c_speed, 0.0, tv, 0.0, Ti)
142+
lon_qp = QuarticPolynomial(s0, c_speed, c_accel, tv, 0.0, Ti)
143143

144144
tfp.s = [lon_qp.calc_point(t) for t in fp.t]
145145
tfp.s_d = [lon_qp.calc_first_derivative(t) for t in fp.t]
@@ -225,8 +225,8 @@ def check_paths(fplist, ob):
225225
return [fplist[i] for i in ok_ind]
226226

227227

228-
def frenet_optimal_planning(csp, s0, c_speed, c_d, c_d_d, c_d_dd, ob):
229-
fplist = calc_frenet_paths(c_speed, c_d, c_d_d, c_d_dd, s0)
228+
def frenet_optimal_planning(csp, s0, c_speed, c_accel, c_d, c_d_d, c_d_dd, ob):
229+
fplist = calc_frenet_paths(c_speed, c_accel, c_d, c_d_d, c_d_dd, s0)
230230
fplist = calc_global_paths(fplist, csp)
231231
fplist = check_paths(fplist, ob)
232232

@@ -274,6 +274,7 @@ def main():
274274

275275
# initial state
276276
c_speed = 10.0 / 3.6 # current speed [m/s]
277+
c_accel = 0.0 # current acceleration [m/ss]
277278
c_d = 2.0 # current lateral position [m]
278279
c_d_d = 0.0 # current lateral speed [m/s]
279280
c_d_dd = 0.0 # current lateral acceleration [m/s]
@@ -283,13 +284,14 @@ def main():
283284

284285
for i in range(SIM_LOOP):
285286
path = frenet_optimal_planning(
286-
csp, s0, c_speed, c_d, c_d_d, c_d_dd, ob)
287+
csp, s0, c_speed, c_accel, c_d, c_d_d, c_d_dd, ob)
287288

288289
s0 = path.s[1]
289290
c_d = path.d[1]
290291
c_d_d = path.d_d[1]
291292
c_d_dd = path.d_dd[1]
292293
c_speed = path.s_d[1]
294+
c_accel = path.s_dd[1]
293295

294296
if np.hypot(path.x[1] - tx[-1], path.y[1] - ty[-1]) <= 1.0:
295297
print("Goal")

0 commit comments

Comments
 (0)