A Trajectory into Guidance, Navigation and Control
Anshuk Shares Some Tips and Personal Experiences on How to Get Into GNC 🚀
On February 6, 2018, SpaceX conducted the Falcon Heavy test flight. Not only did the rocket have a successful liftoff, booster separation, and deployment of a cherry red Tesla Roadster payload, the side boosters autonomously returned to the landing site, and touched down on the Florida coast in a beautiful, synchronized show of engineering brilliance.
As a high schooler looking for a college major, this test flight was very influential. It introduced me to aerospace and the incredible engineering involved. I decided that if I were to go to college for aerospace engineering, I would learn propulsion so I could build stuff like those landing boosters.
It was only during my freshman year at the University of Illinois that I realized that there was another vital aspect to making that booster landing possible.
Enter Guidance, Navigation, Control: GNC
GNC is crucial for making any modern aerospace vehicle fly. As an example, F-35 jets are capable of performing incredible aerial maneuvers because the GNC algorithms on board convert the pilot’s instructions into many deflections of the aero-control surfaces. And of course, GNC algorithms helped Neil Armstrong land on the lunar surface 50 years ago! At a time where the computers were hand-woven coils of copper, the ingenious engineering involved in developing the Apollo Guidance Computer that helped performing the precise orbital maneuvers and attitude estimation is truly inspiring.[1]
The Apollo 11 Lunar Module. Imagine landing this thing on unknown terrain! Photo credit: NASA
When freshman Anshuk learnt of GNC, he became obsessed. With some math, dynamics, and some motors, engineers could make real-life hardware fly where they wanted it to? Amazing!
But what are guidance, navigation, and control? I like to explain these sub-divisions as questions that the vehicle is asking:
Guidance: Where do I need to go?
Navigation: Where am I? What’s around me?
Control: How do I get where I need to go?
I’ve since worked on many GNC projects during my undergraduate career and also worked on flight software and GNC at SpaceX. Now I’m building my knowledge of GNC and autonomy as a graduate student at Stanford. I’ve seen many engineers who have taken different trajectories toward GNC. Some dedicate their undergraduate and graduate educations to GNC, whereas others are software engineers who pick up GNC skills while working in aerospace. But if you’re an undergraduate student with an inkling of interest, here are a few steps that you can take through your educational career to prepare you:
Getting into GNC
Step 1. Learn the Prerequisites 📔
If you’re a high school student or a freshman in college, the math involved can get intimidating really quick. So, I believe learning these fundamentals is crucial:
Calculus: You’re going to deal with differential equations every day. 3blue1brown [2] and Khan Academy [3] are a great way to develop these skills outside of coursework. If you’re enrolled in a STEM program at any university, you should learn this in your first or second year.
Linear Algebra: Know your matrices, vectors, and rotation matrices. It’s essential to not only design control systems, but also representing the system you’re controlling. Again, 3blue1brown [4] or Khan Academy are great online resources to pick up these skills. And you’ll definitely learn this at a university level as a STEM major.
Software: MATLAB/Python are the best for doing the math and simulating your work. If you’re thinking hardware implementation, C++ will start to get involved (also a very useful skill). I’d highly recommend taking any introduction to coding course offered by your university or high school as a great starting point (Or CS50 by Harvard if you want to learn online [5]). With basic understanding of how code works, you’ll be prepared to pick up more specialized software packages.
Step 2. Learn the Fundamentals of Controls 🎛️
Alright, you’re warmed up and ready to dive in. Here are a couple of topics you should check out first:
The Feedback Loop: One of the cornerstones of creating a stable system and controlling it to a desired point is basing your control command on the output of the system in a critical feedback loop. I could rant about this for hours.
PID Control: Proportional-Integral-Derivative controllers. Very classical control system that works really well for all kinds of systems.
Block Diagrams: Control engineers like to model the differential equations they’re developing as “block diagrams”. Simulink is a good tool to practice this with if it’s available to you. Luckily, they’re pretty intuitive and easy to learn!
A block diagram of a basic feedback loop. Do you see the links between the control algorithm (the controller), the information from the world (sensor), and the physical system we’re controlling (the system)? Photo credit: engineerscommunity.com
Unfortunately, most aerospace engineering curricula don’t teach these concepts until your 3rd year. That doesn’t mean they’re difficult. I’ve taught these concepts to many first-year students, and they’ve almost always received it well. There are tons of content sources online you can learn this from:
If there’s a mechanical or aerospace engineering department at your university, asking professors or upperclassmen who specialize in controls can be an extremely valuable resource to learn these concepts early on. I used to regularly ask 3rd-year students in my university rocket team questions to understand these concepts.
Brian Douglas on YouTube is an incredible source of content on control and state estimation. He also created various series with MATLAB’s YouTube channel [6].
If you feel more confident, Steve Brunton on YouTube has more advanced content on his channel.
Step 3: Build Something! 🔨
But I think one of the biggest motivators is actually building something that needs GNC. This is how I got into it, and I ended up learning these concepts through the necessity of making my project work.
Again, you don’t have to be an upperclassman or graduate student to start building these projects. That’s an unfortunate misconception. Joining a student engineering team, like your university’s robotics teams, RC plane team, or rocket team, can be your introduction to building huge projects that you wouldn’t have the resources to build yourself. And if there isn’t already a team, be the trailblazer and start a team through which you can teach more students!
This is how I got my start (shout-out to the Illinois Space Society!): I was working on roll-control flaps for a high-power rocket as a freshman. Natural questions arose: how much do the flaps have to turn to make the rocket roll? How do we know how much the rocket is turning?
One of the most fun things about GNC is that you can’t implement it on its own:
You need to understand the hardware you’re dealing with. Learn about sensors (like Inertial Measurement Units, barometers, etc.) and how you can process that data.
Of course, you also need to learn to implement everything in code (or flight software if you want to sound cooler). Knowing good software practices is an underrated GNC engineer skill.
You need to model the dynamics of your system, and then design about this model. So, learn about the aerodynamics or thrust profile of your plane or rocket (for example), and figure out how that would affect your control design.
You’ll also have to figure out how to code motors or servos, so that you can move the parts of the vehicle that give you active control of the real world (flaps, wheels, engines, etc.)
It’s all interconnected, and doing this has taught me about electrical, mechanical, and software engineering as well! Implementing GNC on hardware is also a different ballgame than just learning the theory, and it’s one of the best learning experiences you can have.
I’ll give you the most classic controls introduction project: the inverted pendulum. Go check it out. It’s a simple system that can show you the power of feedback control. Here’s on my favorite YouTube videos [7]:
Step 4: Dive Deeper into the Theory and Design Techniques 📚️
Now that you’re building projects, it can be useful to get some more theory and techniques under your belt so you’re more efficient and precise with your designs. These are important for being a GNC engineer in industry, or for graduate school to do further research in the field.
Almost any university with an engineering program should have a course in classical controls. This teaches you root locus, bode plots, Nyquist plots for stability analysis, and much more. Remember those PID controllers? You can be very exact with their design now. These techniques are still the most widely used in industry. “Feedback Control of Dynamic Systems” by Franklin et. al. is one of the best books on this topic [8].
Learn about modern controls with state space representation. Implementing LQR (Linear Quadratic Regular, another control design method) by designing your appropriate cost function can be really useful, even if you don’t fully understand the underlying optimal control theory. If you’re going into GNC research or the robotics industry, this will be important. MATLAB has easy to use tools for this [9].
Kalman Filter: Another cornerstone in GNC, and one of the most crucial parts of the navigation and state estimation stack. You’ll often need it to make sense of your sensor data and convert into a form that you can control your system with. If you’re working on hardware, you’ll probably need this [10].
Take an optimization class, as an introduction to optimal control or guidance algorithms. Methods such as convex optimization, dynamic programming, etc. are not only useful outside of controls, but they form the underlying theory for LQR, and a lot of autonomy concept as well.
Again, I should emphasize this: nothing teaches you better than making it work in real life! Reading the theory is okay, implementing in simulation is okay, but implementing on hardware is the real deal (literally).
Step 5: Get Involved with Research 🧪
This is a growing field, and getting things to work at the cutting-edge means you need to understand the tools you’re using from a fundamental level. Research can be a great chance for you to learn:
What the emerging technologies are in GNC design. There’s lots of research labs researching control theory and optimization for aerospace and non-aerospace applications (network optimization, AI, etc.)
To conduct more scientific experiments and analyze data. You’ll need to write a paper on your results, and make sure that your design choices are logical and coherent, which is a vital skill.
Those skills are vital for a future career in GNC. I didn’t do proper research until graduate school. So, in my first role as a GNC engineer, I was well-versed with the system-level integration of GNC with the rest of the software/hardware but struggled initially with the level of simulation and modeling analysis that was required to get a fool-proof GNC design. That experience made me realize the importance of high-quality engineering design, beyond the hacky projects I made in undergrad 😄
Step 6: Internships and Graduate School 🎓️
By this point, you’re fully immersed in the GNC world, but you don’t have any real-life experience yet. It’s time to change that.
Internships:
Companies like Boeing, SpaceX, Lockheed Martin, Blue Origin, etc. are hiring GNC engineers all the time. Your skills in controls and navigation will also be extremely useful in other fields like robotics, automotive, quadcopters, etc. Reaching out to GNC engineers on LinkedIn, applying online, or college alumni involved in the field are great ways to get your foot in the door.
If you’ve built projects that use GNC, you’re already set yourself apart from the crowd. So, it’ll be a big plus when hiring managers are looking at your profile.
I first got my start as a flight software intern at SpaceX, where I regularly worked with the GNC team. Since they got to know me, I was able to get a role on GNC the next summer. Both experiences were incredible, different, and educative in their own way. So, don’t limit yourself to just GNC if there are adjacent fields you feel will also help you build necessary skills!
Graduate school:
Most GNC engineers I know go through some form of graduate school, either part-time MS, an MS with thesis, or a PhD. This is because some of the more advanced topics tend to be specialized and are not taught at an undergraduate level. But again, this is not necessary.
Keep thinking about how novel GNC algorithms can be developed that can improve the performance of vehicles or make the GNC development pipeline more autonomous. You’re at the cutting edge, so think big!
Work on cool research that you really enjoy. Don’t just take classes because, in my experience, it can get boring. When you apply to full-time jobs, your hiring manager will likely ask you to present some research or applied project in GNC you did, and maybe how your research could benefit the company.
Take classes in optimal control, advanced state-space control, and optimization. Robotics classes can also be very useful to learn about guidance and trajectory generation methods.
It’s possible that during your graduate research you come up with an idea that could change the field, and you team up with some of your fellow researchers and launch a company of your own!
Conclusion and Summary
So, you’re a GNC engineer now. Woohoo! Remember to always keep learning new things as it is a growing field with new innovations every day! A push towards autonomous systems is fueling the development of new navigation methods, trajectory optimization, and control algorithms. Stay tuned for more content about these in the future!
Phew, this was a lot. So, here’s the summary of what I want you to take away from this article:
It’s totally possible to learn GNC as a 1st or 2nd year student in college. All you need to know is calculus and some linear algebra!
Nothing teaches you better than hardware projects. Implement those PID controllers and Kalman filters, and make things drive/fly/balance on their own! University engineering teams are a great place to do this and learn from upperclassmen.
Be proficient with your software abilities, as you will use it daily for development and analysis.
Research can be a great way to get better at algorithm design, analysis, and formal writing.
Take courses in classical controls, state-space controls, and optimization. Remember to also be open to learning about the system you’re controlling (e.g. if it’s a rocket, you probably should know how propulsion works!)
Pitch your projects and theoretical understanding to hiring managers for internships in GNC, flight software, or robotics!
Consider graduate school to further your understanding of the latest and greatest GNC tools!
With the advent of new-space companies, hundreds of rockets flying every year, and satellite constellations becoming a reality, GNC engineers are becoming a sought-after resource. I may be biased, but it’s an awesome field with a lot of cool science, challenging engineering, and incredible applications. The Overview is here to help you with your aerospace aspirations, so I hope this article provided you with the guidance needed to navigate this space.
Stay in control,
Anshuk Chigullapalli
The Falcon Heavy’s side boosters landing simultaneously on the Florida coast. Photo credit: SpaceX
Resources
[1] This is a great YouTube video on the Apollo Guidance Computer meant for the general public: https://youtu.be/B1J2RMorJXM?feature=shared
[2] For an overview of calculus with good insights: https://youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab&feature=shared
[3] Khan Academy is a great place to learn high-school level Math: khanacademy.org
[4] For an overview of linear algebra with good insights. This is a favorite of mine:https://youtube.com/playlist?list=PLZHQObOWTQDMsr9K-rj53DwVRMYO3t5Yr&feature=shared
[5] CS50 is a good place to start learning software if you’re a beginner: CS50: Computer Science Courses and Programs from Harvard | edX
[6] Brian Douglas’ series on PID control. He’s got many more playlists of content on MATLAB’s YouTube channel: https://youtube.com/playlist?list=PLn8PRpmsu08pQBgjxYFXSsODEF3Jqmm-y&feature=shared
[7] Flying inverted pendulum video: A Flying Inverted Pendulum - YouTube
[8] Here’s a link to the book, but I recommend borrowing it from a library or buying it second hand: Feedback Control of Dynamic Systems (pearson.com)
[9] LQR in MATLAB: Linear-Quadratic Regulator (LQR) design - MATLAB lqr (mathworks.com)
[10] Just a note about the ubiquity of Kalman filters. I think they’re a great example of how technology invented for aerospace can be useful here on Earth. Kalman filters are used almost anywhere sensors are used in digital systems. Even your phone uses a Kalman filter!