Comms Node UAV Postmortem
Overview
The communications node UAV was my senior design project. The main goal of the project was to hold a Starlink antenna at a sufficient altitude to provide a mesh network for aircraft lower in altitude in hilly/mountainous regions. I worked on a team of at first 12 than 8 people - during the first semester we had 3 foreign exchange students who later left before the second semester. The overall structure of the course + project was to first spend 6-8 weeks learning systems engineering (in this class that was essentially requirements + product life cycle + FAA regulations + acronym hell rather than the engineering of a system - more project management than anything), complete preliminary design in the fall semester, than complete detailed design, manufacturing, and flight testing in the spring semester. The project was plagued by several technical and non-technical issues: inconsistent requirements and preferences from the professor and lab manager, a lack of collaboration from teammates, and some genuinely tough engineering for someone who previously had not worked with an aircraft in any way shape or form. In the end a plane was manufactured, however it never left the ground
TLDR
- Stuff
- Is
- Complicated
Technical Lessons Learned
Flight + Performance Evaluation
This was the newest and in my opinion most interesting part of the project I worked on. I spent a lot of time building the background models that allowed for what I thought was the pinnacle of preliminary design - a stochastic optimizer that considered almost every variable I could think of.
Initial Trade Studies
During preliminary design we were encouraged to conduct a few trade studies using either a spreadsheet developed by the professor and his students several years ago (SAVE) or any other tool of our choice. I opted to code up the basic math myself, as I found SAVE a massive pain to work with and super poorly documented. The analysis was essentially a wing vs battery trade study. Wing span and chord were varied, the wing mass estimated using previous manufacturing testing other teams had done in previous years, than battery weight was solved for based on an estimated fixed mass (mission systems, avionics, fuselage) and available mass from the 55 lb FAA waiver. The analysis hinged on some very early assumptions of Cdo, Clmax, and propulsion efficiency. It also had a constraint placed on wingspan - in theory this thing was supposed to be able to take off on a fire road, so it was limited to 15'. This was later removed as a requirement following the company that was funding the project losing a competition. The results of the trade studies are shown below:



In retrospect I think that these were pretty good for gaining intuition on some of the basic trade offs, but weren't great for real quantitative decision making. What I realized much later in the process is that these trades neglected how fucking difficult it is to build good structural interfaces out of composites. If I were to revisit this, I would probably add some better way of capturing both the mass trades and the "this thing is really hard to do" trades. I'm not quite sure how I would quantify this - maybe even root bending moment would have been informative enough. The other thing these trades were missing was a useful aerodynamic model. Essentially a drag polar was extrapolated from an airfoil that was chosen very early on, without a trade on the airfoil. I was repeatedly told that the airfoil picked was THE BEST, and decided to go with it trusting my teammates. This was ultimately pretty flawed, but we were too late in the process for me to convince them to switch over. These trades were ultimately used to identify our first concept - 15' wings with a 10" root chord and 8" root chord. To our credit, this would have been a pretty efficient wing albeit very very hard to build.
Detailed Design + Optimization
Following PDR I was quite sick of my code base used for the initial trades and rewrote the thing in Python over winter break. I went with an object oriented approach - one could define a wing class, or a fuselage class, and when inputted into an airplane class a drag and lift buildup was computed and you could solve for things like required trim, power during flight, and so on. This second attempt at modelling the aircraft included some more resolved physics. The code had a built in xfoil tool that let you define a wing using an airfoil .dat file. When the code wanted to calculate the lift, drag, and moment of a wing it would interpolate between pre-run xfoil polars. In addition to this, it actually cared about how the tail and fuselage contributed to the design. The fuselage was used to contribute to Cd0 with some standard drag approximations from Reimers, while the tails had the exact same physics as the wing. Ultimately 10+ parmaters of the aircraft were used in a stochastic optimizer to pick the "best" geometry given constraints on sizing, stability, and an assumed battery and mission system mass. The battery mass was a pretty reasonable assumption given we had already picked and ordered batteries, however I still think there was a better way to model other things like the fuselage and additional "structural mass". The result of these optimization runs were pretty cool - it always wanted to build a plane with two wings instead of a traditional tail. Due to the control risk and general complete change in concept, I required that it produce only a traditional aircraft, where the tail provided only down force and only tried to minimize drag. I think this model was a step in the right direction, but it still suffered from how poorly the aerodynamics and structures were modeled. At our scale it became important to care about the specifics of induced drag - depending on what correlation was used, the desired design changed quite a bit. In addition to this, it was still using a linear wing area → wing weight relation. In reality I think the correlation needs to include the thickness of the wing and magnitude of the root bending moment, otherwise it neglects how a thicker less efficient wing could counteract aero issues by being much lighter and easier to build. The other huge issue is that the model did not include landing gear. This was originally fine, as our requirement was to be caught by a net, however this changed as the supporters of the project lost funding. The model ultimately really only helped for tail sizing. I think given how long it took to run and how annoying the code was to work with it probably was not the right tool for the job, and I would have been better to finish sizing a little faster and start worrying about BIG manufacturing issues earlier.


As-Built Performance Evaluation
Following manufacturing and through a combination of the lab not purchasing our batteries, structural issues with the wings, and last minute switching the fuselage ply stack-up, the aircraft came in around 10 lbs lighter than designed. This and a reduction in the maximum loading it could sustain (3g → 2.25g) meant that the performance envelope and stall speed needed to be re-evaluated. These calculations I think were the best analysis I did for the whole project - assumptions were minimal, uncertainty in parameters was captured, and data was well presented. Instead of creating another 1000 line code monster, I dropped everything into a spreadsheet and called it a day. The most important results from this were the reduction in our ability to turn due to g loading and our improvement in stall speed.



The data ultimately informed us on how we needed to plan our first flight profile - something which sadly has not happened.
Wing Design and Analysis
The wing design for this aircraft was... hectic. The manufacturing process was basically something we couldn't choose - we had to do a foam core, carbon rovings, and a fiberglass skin. This made the structure INCREDIBLY sensitive to manufacturing error, and also very annoying to build. To react the bending moment we needed 60 rovings total, which required cutting grooves and individually placing each one. I realllly wanted to bond pultruded spars instead, but only got the go ahead once it was too late to order. Another big complication was the foam cutter: it struggled to actually match cad geometry. My teammates were either unwilling or unable to figure out exactly matching a dxf rather than using the inputs in the software to define spars, foam geometry, and notches, so things like carbon ribs (which I had ordered with my own money) were not possible.
Fuselage Design and Analysis
Vibe Coding
A lot of the code in this project was partially vibe coded. I have mixed feelings about this. It did allow me to worry about the physics rather than implementation and work on other stuff while it chugged. On the other hand, the code base became extremely messy and impossible to execute small changes to. I think I probably spent the same amount of time overall as I would have if I coded everything, however I was able to get my first answer very quickly. I think as models and my prompting improve I am very much pro vibe coding, I just know what I need to look out for in order to make my project maintainable.
Non-technical Lessons Learned
This was.... the worst team and project I have ever worked on. Hands down. I am terrified that all of my teammates are going to shortly receive a piece of paper declaring them ready to go out and design real things for real people to use. I would not trust my or anyone else's life on their ability to engineer anything. I however don't claim they were the only reason the project struggled so hard.
Timeline
The timeline was super fucked. The entire first semester wasn't really in "this is a real thing land" - PDR was super scuffed and wasn't touched until maybe halfway through. There were a lot of hoops to jump through for systems engineeringy things that wasted a lot of time, such as using Innoslate to track requirements as opposed to our own spreadsheet. 2nd semester was also pretty screwed - the plane would not have happened at all if I hadn't worked over the break, and even than there were a number of manufacturing and supply issues that pushed us back around a month. I'd say my biggest takeaway is knowing what actually takes a while and what you should move on from quickly. Composite manufacturing is going to be more work than you think. You are going to run out of things. Either allocate more time to this tasks, or try to design around these constraints.
Wow these guys are MORONS
My team was not very helpful. No one took initiative on owning a problem, no one responded when I had questions about what they were assigned, and no one really did what they were assigned until the last possible second. There quality of work was extremely low and it was clear they didn't really know anything about analysis or designing things that had to exist in real life. See exhibit A below, the Starlink mount they designed.

I do think everyone deserves a chance to learn. Clearly some of this wasn't a personal failure of them, but a failure of UT as an institution to not properly teach engineering. I don't fully fault them for this. What I do fault them for is failing to communicate what they were doing or outright ignoring analysis I had conducted. While I was gone at a combat robotics competition the team held a vote on what side to put the rovings. The correct side was to place more on the compression face - the rovings are weaker and less stiff on this side, so it needs more reinforcement to not buckle or break first. They argued giving the tension side more rovings is more bang for your buck, thus was the correct thing to do. This entire argument was verbal, none of them provided a calculation or derivation for their reasoning. None of them had worked on the wing structural design or testing. Not a single person in the room had run the FEA or done the hand calcs. Only one person voted against their decision. The wing subsequently only tested to 2.25gs instead of the designed and required 3. Another fantastic example of this behavior was when our chief engineer (who was "not a structures guy") cooked up his own front landing gear mount. It involved two shaft collars used as bearings, bolted through two wood plates that were glued to the fuselage. The plates were not stiff enough to prevent the gear from twisting sideways, the servo didn't have enough torque to actually steer the landing gear, and nothing on the landing gear constrained it laterally except the bottom of the gear and a servo horn bolted to the shaft. This essentially was what killed our flight attempt, as it prevented us from taxiing. He built this with no input from anyone. Another great moment was when the same guy installed our satellite antennas on the fuselage. The purpose of these antennas is to provide reliable connection when the carbon fuselage would otherwise eclipse a good signal path. Instead of cutting a channel in the wings, he chose the path of least resistance and stuck them to the front and sides of the fuselage, leaving the back essentially blind to RF. Its tough to have a positive takeaway here given it felt like I was working against my own team. I will say I have learned the value of extreme ownership - because I was responsible for the entire wing design, I should have been present and responsible for the manufacturing. My teammates should have also respected that I was the owner of the design and not opt to revise it as they were making it. I also realized how important good leadership is. We did have someone designated as our project manager, and he did recognize how little most of the team contributed, but wasn't willing or interested in addressing it. I think I should have communicated very early on with the professor how things were going and saved myself some frustration.
Wow I did not know how to handle the situation
Early on I was pretty terse with my teammates. I wasn't willing to flat out call them stupid, but my tone probably betrayed that pretty quickly. I also made the mistake of making myself too valuable of an asset - I did a lot of work on the performance modelling, CAD, FEA, and manufacturing strategy, and thus was the person to talk to for those. It left me in a situation where it was probably hard to jump in and do work if you didn't know what you were doing, thus I was stuck over committing myself. When some teammates were flat out refusing to do work or attend workdays I should have immediately written my professor. I didn't want to start shit, so I held off until late in the 2nd semester when I was burning out and not sleeping. My main lesson learned here was that I need to stick up for myself a little more. It would have helped.
Wow neither did my professor
I did eventually write to my professor. He did nothing. He didn't respond to or acknowledge what I said. In addition to this, he was a source of many headaches regarding requirements and what he actually wanted us to do. He clearly had an idea of how he wanted each team to build their plane, but would only share it in design reviews where he would say that even if our solution made sense, he wanted us to do it a particular way because he said so. Mark, the lab manager was even worse. He spent the last 20 years building RC planes and was pretty knowledgeable of the topic, but was just straight up an asshole. He was also a terrible communicator, even when he had nice things to say. The Mark cycle was a phenomena where we would propose a design, show it to him and get belittled for the concept, revise the design such that it would satisfy him, than get shat on again for doing things that he requested. He sat in one teams design review and railed on them for using a Starlink. Which was the entire point of the plane.
Wow the lab is very very cancer
The lab we worked in was horrible. Most DBF and LRA students ignored PPE + cleanup protocols. People would just start cutting carbon fiber without telling anyone or putting on a respirator themselves. There was no enforcement of cleaning up after yourself, including dust and clutter so the entire place was coated in a film of fiberglass and carbon fiber and filled with tripping hazards. There were no bunny suits to put on over your clothes, so every time you cut something it would stay on you as you left. Overall it was just egregiously unsafe. My main lesson hear is that I should say something if I see something. EHS would absolutely get involved if they knew what was going on. I should never buy into the idea that because we need something yesterday I ought to ignore safety.
< back home