Trajectory Generation

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.

Whitepaper: Trajectory generation

This paper requires a bit of background in linear algebra, so in addition we wrote this paper on linear algebra:

Whitepaper: Linear algebra

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.)

and if you have any questions don’t hesitate to contact us at
or contact me at

you can find our papers and presentations at our website


Out of curiousity, what’s your reasoning behind “being a more software independent team”? Is your programming curriculumn quite strong?

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.

1 Like

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.

Thank you for coming to my ted talk!

1 Like

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.