Path Planning for Autonomous Race Cars (Project 208) #39
Replies: 20 comments 44 replies
-
Howdy! I'm a student at the University of Waterloo, and I'm super interested in working and collaborating on this project! This is going to be one of my first forays into path planning for something like an autonomous car, and I'm looking forward to learning as much as I can. |
Beta Was this translation helpful? Give feedback.
-
Hi I am Akashleena Sarkar (Aleena) from India. Open to collaboration and ideas. Cheers! |
Beta Was this translation helpful? Give feedback.
-
Hey I am Sankalp from VIT Vellore, I have only recently learnt MATLAB and am expecting to use this as a great learning opportunity and brainstorm an epic way to do this project. Open to collaboration and ideas Godspeed |
Beta Was this translation helpful? Give feedback.
-
Hello all, I found a video lecture from the University of Pennsylvania. Here is the link: Video Lecture: Autonomous Racing: Raceline Optimization I found this useful as it nicely explains each step. It is based on Covariance-Matrix Adaptation Evolution Strategy. For its implementation in MATLAB, you can follow this File Exchange Submission. Please feel free to explore. Regards, |
Beta Was this translation helpful? Give feedback.
-
Thank you for the resources sir!
|
Beta Was this translation helpful? Give feedback.
-
Hi, I am Krishna Teja from IIT Madras. This is an interesting project and thanks for the useful resources. |
Beta Was this translation helpful? Give feedback.
-
Hi everyone! If you're pursing route optimization for minimum curvature, I found a good resource that I felt would be worth sharing! The file is attached. Cheers! |
Beta Was this translation helpful? Give feedback.
-
Hello all, For the optimization route, I have found this repository by TUMFTM. They have approached this problem in four different ways. The code is in python, but the mathematics is essentially the same. Github repository - https://github.com/TUMFTM/global_racetrajectory_optimization You could check out the four references at the bottom of the page. Regards, |
Beta Was this translation helpful? Give feedback.
-
Hi all, I'm happy to share the first iteration of my attempts at creating a minimum curvature optimizer for a given track! You can find the code here as well as example 1 video and example 2 video. I am in the midst of creating a velocity profile for these trajectories as well. Once that is complete, I will be able to better annotate and layout how it works in the repository's readme file. As a brief overview, this uses a path searching algorithm to find ideal curvature points along given lines within the track that are predetermined using spline interpolation. It uses a much more localized (and thereby likely inefficient) approach than a global approach that some optimization methods use. In the future, I may investigate using a more global approach that relies on something like genetic/evolutionary algorithms. Cheers! 7/30 Edit: I found a glaring error in my calculation for curvature; however, it is locally fixed. That said, I'll work on uploading new optimization videos that reflect this. 8/1 Edit: The new optimization videos can be found here (Kidney Bean) and here (Oblong) |
Beta Was this translation helpful? Give feedback.
-
Hi all, An update on my previous post, I have managed to create and implement a velocity profile generator based on point mass kinematics found in a resource I shared previously. Some example videos of this execution can be found here for the oblong track I shared previously and here for the kidney bean track I shared previously. This relies on looking at the curvature of the track at specific instances based on the arc-length position of the mass and the mass's maximum lateral and longitudinal forces. This is then converted to a time domain through a state updater based on "zero" (1e-6) initial velocity and time steps of 0.001s. The curvature path also has a 20% buffer, which ensures that the mass will, at no point, exit the inner or outer bounds of the path. I'll be refreshing my repository here in a minute if anyone has an interest in looking through it! Note: The oblong track looks different from the previous video due to differences in plotting. The velocity video uses axis equal, but the curvature optimizer doesn't (yet). I'm hoping to fix this soon. If you have any questions or suggestions, please feel free to ask! Cheers, |
Beta Was this translation helpful? Give feedback.
-
Hi Jakeb, Appreciate your effort in incorporating velocity profiler in the code during the weekend. 💯 I tested your code on various racing tracks (track width = 6 m, Norm factor gain = 5) and the optimized paths obtained are impressive and as expected. 👍 Regarding the video shared for the oblong track, I can see that the vehicle cuts corners at approximately 25 m/s to 30 m/s which I think is on a higher side. Can you provide some explanation on this? We can also discuss this by email. Also, do you have any plans of implementing the dynamic model velocity profile as presented in the thesis (Section 4.2) you have referred to? Great job! 👍 |
Beta Was this translation helpful? Give feedback.
-
Hello all, First of all, I want to say that Jakeb has done an excellent job. The videos he created were outstanding, and the documentation he is currently building also looks pretty neat. Keep it up! I also wanted to share that I have completed developing a trajectory generator and velocity profiler. I will briefly explain each section of the entire process. ConceptMy main idea was similar to Jakeb's: first, create a minimum curvature trajectory and then develop a velocity profile based around it. This method is generally used by almost every paper written on this topic, at least as a starting point. I also calculated the velocity profile of the shortest path around the given track to show how bad the lap times are for it compared to the min curvature one. I also validated most of my results with data and literature I found online. Trajectory GenerationFor this section, I followed a global approach for both the shortest path and min curvature trajectory. The methodology I stuck to is outlined in this paper, Race Driver Model. I converted this entire subject into a quadratic programming (QP) problem and solved it with the help of the 'quadprog' function in MATLAB. I also derived the equations for H and B matrices myself in terms of the coordinates of the track edges. Then I substituted these matrices in the QP solver along with the constraints that restrict the trajectory within the boundaries. I also added another condition that requires the starting point to be the same as the end one. The reasoning behind this was to create a loop rather than a broken track at the end. As soon as the solver is executed, it automatically outputs the results, making the solving time almost negligible. It usually takes around 11-12 iterations to find the result. Unfortunately, quadprog doesn't have the functionality to output the result of every iteration, making me incapable of rendering the really cool animated GIFs Jakeb had presented. Some of the drawbacks and improvements to my method have been mentioned in this paper Minimum curvature trajectory planning and control for an autonomous race car. One critical simplifying assumption I made was neglecting the 2x'y' term in my curvature definition. This leads to a slightly suboptimal solution but significantly reduces the effort for calculating the H and B matrices. One improvement would be to use an iterative QP routine that replaces the reference line with the solution of the previous QP iteration. ImagesShortest Path - Silverstone --- Minimum curvature - Silverstone For comparison - Raceline uploaded by TUMFTM for Silverstone track Velocity Profile GenerationTo generate a velocity profile, I referred to this paper, Optimized Trajectory Generation for Car-Like Robots on a Closed-Loop Track that Jakeb shared. Along with that, I also followed Optimal velocity profile generation for given acceleration limits: theoretical analysis, which actually inspired the previous report and mentioned it as a reference. The main idea was to identify the max curvature points for the optimized trajectory, assign a certain critical velocity to each one, and generate velocity profiles around these points. Since it is assumed that the vehicle follows the course perfectly, the only driver input would be the throttle and brake commands. It is mentioned in the previous papers that to achieve minimum time, control inputs for acc and dec must be 1 and -1, respectively. These intermediate velocity profiles are generated according to specific rules defined in the literature. The final profile is the minimum of all these in-between profiles. One modification that I made to these rules was to check if the critical velocity at the max curvature point was greater than the acc profile from the previous step; if it was, I continued the previous profile rather than starting a new one. The exact process was followed for the deceleration profiles. Finally, lap times were calculated from the velocity and length vectors in order to validate my results with actual data. Lap Time Silverstone, UK (F1) [calculated] - 96.6s -- Current Lap record - 90s As it was previously discussed, the literature mentioned in this section has some errors in the critical velocity and velocity iteration formulae. I have corrected them in my implementation. I have also included aerodynamics effects for traction and braking by inserting a -v^2 term within the equations. Since the velocities are really high in F1, aerodynamics drag cannot be neglected. ImagesVelocity Profile for min curvature trajectory of Silverstone track NotesMost of the track data I tested was from this Github repository, Race Track Database that Krishna mentioned in his LinkedIn post. The data is available in a neat format with the x and y coordinates in the first two columns and the left and right track widths on the other two. Currently, the only animations that I have are for a marker moving along the trajectory. I am working on adding a velocity component to that. I will upload the code for this project on my Github repository with the appropriate comments and documentation to increase clarity. Any feedback or suggestions are welcome! Regards, |
Beta Was this translation helpful? Give feedback.
-
Hi all, We are glad to share that we have received our first submission from Jakeb. You can find the submission here. We have accepted the solution. Congratulation Jakeb! 🥇 Jakeb has shared the certificate on his LinkedIn account. You can check the post here. We are looking forward to your submissions. Please let us know if you have any questions. Regards, |
Beta Was this translation helpful? Give feedback.
-
Hi all, I hope you are doing well. Here is our second submission from Arthur RodriguezStatus from the University of Southampton. With his implementation, Arthur was able to reduce the lap time by 17%. You can check out the repository here: https://github.com/Arttrm/MW_EiI_208_Trajectory_Planning_and_Tracking Congratulations Arthur! 🥇 Regards, |
Beta Was this translation helpful? Give feedback.
-
Hello Sir,
Is the competition still open?
I was trying simulink for path planning and optimization of aerial robots.
I would like to share my progress and discuss with other peers to progress
faster.
Kind Regards
Akashleena
…On Sun, Aug 15, 2021, 10:09 veeralakshendra ***@***.***> wrote:
Hi all,
We are glad to share that we have received our first submission from
Jakeb. You can find the submission here
<https://github.com/borealis31/MW208_AUTON_RACECARS/tree/f5b26b8289c44989aab2fba4683b0a9c0830a4d5>
.
We accepted the solution. Congratulation Jakeb! 🥇
Jakeb has shared the certificate on his LinkedIn account. You can check
the post here
<https://www.linkedin.com/posts/activity-6831203106261413888-H5PO>.
We are looking forward to your submissions. Please let us know if you have
any questions.
Regards,
Veer
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#39 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AJBWXW62QXUEFC7SEDBZYBDT45AIPANCNFSM45BCBSXQ>
.
|
Beta Was this translation helpful? Give feedback.
-
Hi all, Here is a detailed video from Jakeb where he explains his solution to the problem: MathWorks Excellence in Innovation Project 208: Raceline Optimization Using Discrete Mathematics Regards, |
Beta Was this translation helpful? Give feedback.
-
Hey everyone! |
Beta Was this translation helpful? Give feedback.
-
Hello, This is Aakash and I am a student pursuing my masters at KTH. I would like to work on the Path-Planning-for-Autonomous-Race-Car. I would like to get started with the project and would like to get some help on the same. |
Beta Was this translation helpful? Give feedback.
-
Hello everyone, I am Shubham from Technical University of Kaiserslautern. I have started working on the ath-Planning-for-Autonomous-Race-Car project. I have already learned a lot from the discussion here and it is beneficial indeed. I look forward to collaborating and learning from you all. Thank you! Regards, |
Beta Was this translation helpful? Give feedback.
-
Could anyone please tell the abstract of the project and the datasets that can be used |
Beta Was this translation helpful? Give feedback.
-
Contribute to the discussion by asking and/or answering questions, commenting, or sharing your ideas for solutions to project 208
Beta Was this translation helpful? Give feedback.
All reactions