From 84cf3088219d2200554c98996c9109f7c4a0fdd4 Mon Sep 17 00:00:00 2001 From: Peter Stahlecker Date: Wed, 18 Sep 2024 17:28:32 +0200 Subject: [PATCH 1/2] reduced frames in animation, better initial guess --- examples-gallery/parallel_park_solution.npy | Bin 0 -> 40208 bytes examples-gallery/plot_parallel_park.py | 23 ++++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 examples-gallery/parallel_park_solution.npy diff --git a/examples-gallery/parallel_park_solution.npy b/examples-gallery/parallel_park_solution.npy new file mode 100644 index 0000000000000000000000000000000000000000..ea031535083091531089d1f550005ed5e204a0dd GIT binary patch literal 40208 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 ^ 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 literal 0 HcmV?d00001 diff --git a/examples-gallery/plot_parallel_park.py b/examples-gallery/plot_parallel_park.py index 513241a..cae3442 100644 --- a/examples-gallery/plot_parallel_park.py +++ b/examples-gallery/plot_parallel_park.py @@ -1,3 +1,4 @@ +# %% """ Parallel Park a Car =================== @@ -185,10 +186,14 @@ # %% # Find the optimal solution. +initial_guess = np.load('parallel_park_solution.npy') solution, info = prob.solve(initial_guess) print(info['status_msg']) print(info['obj_val']) +# %% +#Improved initial_guess is stored like this +# ```np.save('parallel_park_solution.npy', solution)``` # %% # Plot the optimal state and input trajectories. prob.plot_trajectories(solution) @@ -223,8 +228,18 @@ coords = [] for xi, ui in zip(xs.T, us.T): coords.append(eval_point_coords(xi, ui, list(par_map.values()))) -coords = np.array(coords) # shape(600, 3, 8) - +coords = np.array(coords) # shape(501, 3, 5) + +coords1 = [] +time1 = [] +for i in range(coords.shape[0]): + if i % 3 == 0: + coords1.append(coords[i, :, :]) + time1.append(time[i]) +coords1.append(coords[-1, :, :]) +time1.append(time[-1]) +time = np.array(time1) +coords = np.array(coords1) def frame(i): @@ -261,12 +276,12 @@ def animate(i): ani = animation.FuncAnimation(fig, animate, len(time), - interval=int(interval_value*1000)) + interval=int(interval_value*1000*1)) # %% # A frame from the animation. # sphinx_gallery_thumbnail_number = 7 -frame(450) +frame(140) plt.show() From 08fb6ca0e2f6cd0f427deeb34e6205e8cd13c4ed Mon Sep 17 00:00:00 2001 From: Peter Stahlecker Date: Thu, 19 Sep 2024 07:27:21 +0200 Subject: [PATCH 2/2] changed as per suggestions from Jason and Timo --- examples-gallery/plot_parallel_park.py | 29 ++++++++++---------------- 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/examples-gallery/plot_parallel_park.py b/examples-gallery/plot_parallel_park.py index cae3442..3bd72e6 100644 --- a/examples-gallery/plot_parallel_park.py +++ b/examples-gallery/plot_parallel_park.py @@ -1,4 +1,3 @@ -# %% """ Parallel Park a Car =================== @@ -174,7 +173,8 @@ prob.add_option('nlp_scaling_method', 'gradient-based') # %% -# Give some rough estimates for the x and y trajectories. +# Give some rough estimates for the x and y trajectories. They were used to +# generate the initial guess, now stored in the file parallel_park_solution.npy. x_guess = 3.0/duration*2.0*time x_guess[num_nodes//2:] = 6.0 - 3.0/duration*2.0*time[num_nodes//2:] y_guess = 2.0/duration*time @@ -185,15 +185,17 @@ prob.plot_trajectories(initial_guess) # %% -# Find the optimal solution. +# Solve the optimisation, using the initial guess stored in the file +# parallel_park_solution.npy. initial_guess = np.load('parallel_park_solution.npy') solution, info = prob.solve(initial_guess) print(info['status_msg']) print(info['obj_val']) # %% -#Improved initial_guess is stored like this +#Improved initial_guess may be saved and stored like this: # ```np.save('parallel_park_solution.npy', solution)``` + # %% # Plot the optimal state and input trajectories. prob.plot_trajectories(solution) @@ -230,17 +232,6 @@ coords.append(eval_point_coords(xi, ui, list(par_map.values()))) coords = np.array(coords) # shape(501, 3, 5) -coords1 = [] -time1 = [] -for i in range(coords.shape[0]): - if i % 3 == 0: - coords1.append(coords[i, :, :]) - time1.append(time[i]) -coords1.append(coords[-1, :, :]) -time1.append(time[-1]) -time = np.array(time1) -coords = np.array(coords1) - def frame(i): fig, ax = plt.subplots() @@ -267,6 +258,8 @@ def frame(i): fig, title_text, lines, Pr_path, Pf_path = frame(0) +time = list(time) +time[-3:] = [time[-1]]*3 def animate(i): title_text.set_text('Time = {:1.2f} s'.format(time[i])) @@ -275,13 +268,13 @@ def animate(i): Pf_path.set_data(coords[:i, 0, 2], coords[:i, 1, 2]) -ani = animation.FuncAnimation(fig, animate, len(time), - interval=int(interval_value*1000*1)) +ani = animation.FuncAnimation(fig, animate, range(0, len(time), 3), + interval=int(interval_value*1000*2)) # %% # A frame from the animation. # sphinx_gallery_thumbnail_number = 7 -frame(140) +frame(450) plt.show()