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!