Initial menus and Basics of Flight
Flying and landing the airplane
This project was initially inspired by two things: the procedures my family follows when we fly, and the EICAS many modern airliners are equipped with. When my family flies general aviation together, we always make sure everyone knows the basics of how to fly and how to call for help should something go wrong. We know the odds of this are very low, but there have been cases in which the pilot of a general aviation flight has become incapacitated for some reason and the passenger is left to fly the airplane on their own.
While I like the idea of teaching procedures to people, I also know that there are a lot of things to remember when flying (and, in particular, landing) an airplane. This is where the EICAS (Engine-Indicating and Crew-Alerting System) comes in. For the purposes of this project, an EICAS can be thought of as an electronic checklist that helps the flight crew of a large aircraft identify and resolve problems with aircraft systems. This way, no procedures have to be memorized, and the process of solving a problem can be as simple as reading an instruction and then performing it. I wanted to have the same level of simplicity in my emergency procedures, so I went for an EICAS-style model for SafeFlight.
What it does
SafeFlight is an app designed for passengers on general aviation flights with little or no flying experience. In the event they have to take over the controls and land the airplane, this app can help guide them through the process without requiring a flight instructor or even another pilot on board. The app displays the location of the aircraft relative to the emergency airport before providing instructions on how to fly there and land. Through the app, the user learns how to control the aircraft, make a distress call, set up for a landing, land safely, and shut down the aircraft for post-landing evacuation. SafeFlight uses series of animated images accompanied by short descriptions of each step to make the process of landing an aircraft as smooth as possible. It is designed with the intention that even first-time flyers can make a survivable landing before contacting emergency services.
How I built it
I Swift and Xcode to create a simple multi-page iOS app. The entire procedure is stored in a dictionary that keeps phases of flight, instructions, and graphics organized. Most of the graphics are videos of me in a simulator performing the current step of the procedure. I created the remaining graphics using Adobe Photoshop and assets from The Noun Project.
Challenges I ran into
While I have some experience with UIs, most of my experience is in backend Python programming. My strengths revolve around machine learning and hardware/software projects, so writing an iOS app from scratch was fairly new to me. The little GUI experience I've had is in PyQT and Tkinter, which aren't much help with iOS, so that proved to be a learning curve.
Accomplishments that I'm proud of
I'm quite happy with the way the project turned out. This isn't what I expected to build for HackRiddle, but I very much enjoyed the process of bringing SafeFlight to life. I particularly enjoyed the process of designing the procedure and UI. It was a challenge to develop a simple and understandable way to communicate the difficult task of landing an airplane and another challenge on top of that to design a UI that didn't get in the user's way of following the procedure. I found it quite fun to spend the weekend working on this.
What I learned
I learned a lot about a variety of topics during this project. I learned how to properly program in iOS - a skill that I will likely apply in future projects now that I have it available. I also learned a lot about how to design procedures and user interfaces that packed as much information as possible into as small and understandable a format as possible. Finally, I improved my project planning skills by using this as an opportunity to practice scheduling items and organizing features into different app versions (what is essential and should come first, what is less important but would be nice, what will take a long time to implement and is non-essential, etc.).
What's next for SafeFlight
Currently, the app doesn't actually select a nearby airport, it just simulates the process for demonstration purposes. Future versions will include a database of airports that can be searched to find the best airport or airstrip for an emergency landing. These sites will be selected based on distance, runway length, wind and weather conditions, difficulty of approach/landing, and a variety of other features to ensure the user has the best possible chance of making a successful landing.
Additionally, I would love to implement GPS-sequenced procedures in SafeFlight. At the moment, the user must scroll through the procedures manually, but there is the potential to use the GPS to automatically show the right step at the right time. Not only would this allow the user to more closely focus on flying and communicating with ATC, it should help reduce the likelihood of confusion and possible disaster.
Finally, while I like the simulator videos, it is important that the videos be re-shot in an actual aircraft so that the video cockpit looks almost identical to the user's cockpit. One could also shoot in different aircraft so that users flying in aircraft other than the Cessna 172S NAV III would have procedures ready to go.