Hi, we are General Angels 2230, a small software-heavy(innovation in control 3 years in a row) FRC team from Israel.
This year we started writing whitepapers about stuff we find interesting and thought would help other teams develop more advanced programs, and be a more software independent team(less wpilib)
we will start at the basics (trajectory generation and path following) and then move on to some more advanced topics.
This paper is about trajectory generation, and how to do it yourself.
Itās also the first General Angels 2230 whitepaper.
If you have more topics youād like to know about, tell us!
(we have been utilizing ROS for a few years and writing our own image detection so these are options too.)
Most teams just use WPILib (which is not a bad thing) but I personally prefer to understand whatās going on behind the scenes (unless itās a super hard and a very time consuming concept to learn) because I think itās fun, and I like to learn, and i hope others are like this too.
So I prefer to implement it myself and I think other teams will learn a lot more writing it rather than using a library.
I hope it will encourage teams to write and learn more concepts.
As of our programming curriculum⦠we do not really have one.
Every year, we try to add more features to our code and improve it.
Our vision is that every year, the new team members will need to think of something new (but of course, we teach them the basics).
We try to improve our old code and add new code each year, so we ālearn as we goā and mostly learn when we have ideas for improvement or ideas for new concepts (then we do research).
Keep in mind that itās going to be harder to teach people your custom trajectory generator with little documentation over the WPILib trajectory generator which is well-documented if the above quote is accurate.
Another thing that I noticed about your paper is that it mostly covers cubic splines. Although these are certainly relevant to trajectory generation, they suffer from curvature continuity issues (which is why WPILib uses clamped cubic splines instead.) The other thing is that you mostly only covered splines. There are many other pieces in between that are required to make a trajectory generator with similar features to WPILib (e.g. recursive arc subdivision, constraint-respecting motion profile generation, localization and odometry, and feedback control of your global pose.) All of those could be good additions to your paper.
Anyway, Iāll finish off with a shameless plug of my presentation on the same subject that might help with learning about some of the other areas that I listed.
The reason we do not have a planned curriculum is that we have new stuff every year and people might come with previous experience in these fields.
The things we always teach are the things we write and know are a must.
The only thing they need to know if they want to use it, is to know the 6 parameters they need (with one optional)(x0 y0 x1 y1 d1 d2).
As is said, wpilib is good, especially for beginners and i have no doubt that wpilib is very well written and documented.
By the way, nice presentation!
Animation is great for explaining things, but this paper was made to be intuitive and practical, so thereās a lot more math involved in there.
Intuition doesnāt write code.
Unfortunately, if I was going to put there every single aspect on the topic and fully explain how to itās working, it would be very very long and people wouldnāt want to read it and learn it, which is the exact opposite of our purpose.
This paper is for people who wanted to to ālevel upā their skills and learn a thing or two,
or maybe implement path generation themselves.
Ahhhh I did not came here to argue so iām ending on this point:
I agree that cubic splines arenāt perfect but they are 90% of it all, and they are what you need for most uses (FRC too).
But adding the 10% is 9 times more effort for teams that just need the basics. In short- these 10% require much more effort for not so much benefit.
If people want, they can use WPIlib, and if they want to know some more and implement it themselves, now they have a source to learn from.